2009-08-03 5 views
6

J'ai une question sur les vues, en particulier sur le regroupement d'une relation. J'ai un nœud "partenaire" qui a beaucoup de "docs", je veux lister le nom du "partenaire" avec ses "docs" ci-dessous. J'ai la relation correctement mise en place (je pense) mais je n'arrive pas à comprendre comment et où le grouper correctement.Drupal: Vues: relation de regroupement dans la liste de blocage

Je reçois ceci:

partner name 1 
- doc name 1 
partner name 1 
- doc name 2 
partner name 1 
- doc name 3 
partner name 2 
- doc name 4 
partner name 2 
- doc name 5 
partner name 3 
- doc name 6 

mais souhaitez:

partner name 1 
- doc name 1 
- doc name 2 
- doc name 3 

partner name 2 
- doc name 4 
- doc name 5 
- doc name 6 

Répondre

7

On dirait que vous êtes sur la bonne voie. Pour que le regroupement fonctionne comme indiqué ci-dessus, vous devez définir le style d'affichage sur "Liste HTML", puis, sous les options de style, définir le champ de regroupement sur le nom du partenaire. Une fois que vous avez ce travail, vous pouvez modifier le champ du nom du partenaire, et sélectionnez «exclure de l'affichage», ce qui devrait vous donner le format désiré.

+1

C'est exactement config que j'ai défini, mais la sortie est toujours comme indiqué ci-dessus. – Ronn

+0

Ceci est un bon conseil, vous devrez également définir la ligne de titre dans la section des champs à exclure de l'affichage. http://drupal.org/node/486800#comment-1684306 – Kevin

2

J'ai rencontré ce même problème aujourd'hui. Dans une tentative de dépanner, j'ai fait une nouvelle installation vide de Drupal et ajouté seulement mon type de contenu et la relation. Lorsque j'ai créé la vue, je n'ai pas vu le problème. Une fois que j'ai commencé à ajouter des modules, j'ai trouvé que le développeur du thème dans le module de développement causait le problème. Essayez de le décocher et de recharger votre vue. Vous pouvez également voir cela en laissant l'élément coché, en ouvrant un navigateur différent et en accédant à la vue en tant que personne qui ne verra pas le développeur du thème.

0

J'ai eu un certain succès en utilisant le module views_field_view qui vous permet de spécifier une vue en tant que champ.

D'abord, j'ai créé une vue avec le champ unique que je voulais regrouper par et ensuite over-rode la requête en utilisant le code suivant.

function hook_views_pre_execute(&$view) { 
    if ($view->name == 'phone_search') { 
     $query = 'SELECT DISTINCT node_data_field_status.field_status_value AS node_data_field_status_field_status_value 
      FROM content_type_phone node_data_field_status'; 
     $view->query->query = $query; 
     $view->query->final_query = $query; 
     $view->query->count_query = $query; 
    } 
} 

La raison est que les vues comprend automatiquement les nid et les champs vid lorsque vous l'avez mis pour sélectionner distincts afin de ne pas réellement les valeurs distinctes. En piratant la requête comme ça j'ai travaillé autour de ce problème.

Le module views_field_view m'a permis de créer une deuxième vue avec les champs que je voulais afficher dans les groupes. Lorsque vous ajoutez le champ view_field à la vue principale (celle dans laquelle la requête est écrasée), vous pouvez spécifier un champ à transmettre en tant qu'argument. Cet argument doit ensuite être spécifié dans la vue enfant.

Tout est un peu compliqué mais j'espère que c'était clair!

0

Ceci est quelque chose dont les vues sont faibles. En général, j'écris un module pour produire ce genre de résultats, car je trouve l'écriture de sql plus rapide et plus facile à gérer que la lutte avec des vues pour le faire. Cela dit, il existe de nombreux plugins de vues qui offrent ce type de fonctionnalités. Je ne les ai pas testés parce que je trouve cela plus facile avec une petite quantité de code personnalisé en général, mais voici quelques projets qui cherchent à fournir une solution à ce type de choses pour les vues.

https://drupal.org/project/views_complex_grouping

https://drupal.org/project/views_grouped_table

Il y a beaucoup d'autres, mais je ne peux pas poster deux liens parce que je ne réponds pas souvent des questions sur ce site :)

acclamations

Questions connexes