2010-11-04 7 views
1

J'utilise le module Flux pour importer de nombreux nœuds d'éléments de fil. En raison d'un fichier de flux mal formé, je reçois beaucoup de doublons. J'utilise une vue pour afficher ces nœuds, et je dois pouvoir ajouter un filtre DISTINCT sur le champ "Node: Post Date", donc je n'ai que 1 résultat pour chaque post-date.Drupal 6 & Views 2 - Champ DISTINCT

Je m'attarderai aussi sur le problème à la source pour ainsi dire (je ne veux pas avoir tous ces doublons en premier lieu), mais c'est une question intéressante en soi - je ne trouve pas de façon d'ajouter un filtre DISTINCT sur un champ autre que l'ID de nœud (qui a sa propre option dans la boîte de paramètres de base de la vue).

Répondre

2

J'ai trouvé un bon article sur un bon moyen de modifier les requêtes SQL générées à partir des vues avant qu'elles ne soient exécutées: http://echodittolabs.org/blog/2010/06/group-views. J'ai utilisé ceci pour suffixer fondamentalement une clause GROUP BY à la fin de la requête (d'une manière vraiment agréable, propre et polyvalente). En outre, j'ai également trouvé un moyen de résoudre le problème de l'importation de beaucoup d'éléments de flux dupliqués, dont les détails sont ici: http://drupal.org/node/661314#comment-3667228. Il adopte une approche assez extrême (en supprimant tous les éléments avant chaque mise à jour), mais c'est la seule solution pour certains flux malveillants malformés.

je retenais pour une caractéristique non découverte de vues qui vous permettent de le faire, mais je ne pense pas qu'il y ait un - peut-être dans la prochaine version;)

0

Je suppose que vous avez deux options: soit mettre une certaine logique dans le fichier de modèle de vue pour ignorer les éléments dupliqués ou implémenter hook_views_query_alter() pour modifier la requête utilisée par la vue, en ajoutant la clause DISTINCT.

+0

Merci pour votre réponse. J'ai déjà trouvé une solution de contournement en utilisant views_views_pre_execute(), voir http://echodittolabs.org/blog/2010/06/group-views. Il semble étrange qu'il n'y ait aucun moyen de le faire en utilisant l'interface utilisateur Vues ... – jackocnr

1

Il y a deux options pour résoudre ce: \

  • appliquent this patch
    OU
  • hook_views_query_alter => il suffit de coller

    $query->distinct = 1;
    $query->no_distinct = 'views_groupby';

0

Nous avons constaté ce problème dans la vue 6.x drupal - avait 7 150 articles dupliqués une ou deux fois. Aucune idée pourquoi. Problème est apparu uniquement pour les utilisateurs anonymes. Heureusement, les vues 6.x.2.16 fournissent un paramètre «distinct» dans les paramètres de base, je l'ai défini sur Oui et me suis débarrassé des doublons.

Questions connexes