Bonjour tout le monde,

Drupal évolue, les versions changent et Kolossaldrupal.org était essentiellement consacré à la version 6 de Drupal.

Autant dire que les infos présentées ici commencent à dater...

Faute de temps, je ne peux plus garder le site Kolossaldrupal à jour...

Je vous aurais bien proposé de reprendre le flambeau mais... c'est tellement simple de nos jours de se faire son propre site à soi...Pourquoi s'embêter alors ? :-)

Ce site restera donc en l'état, tel qu'il était en 2011...

Ah la la ! Cela ne nous rajeunit pas !

Manuel Vila - Avril 2016

Views, utiliser les Relations, les Arguments et les Fichiers attachés

Traduction de l'article de Michael Anello : Using Views Relationships, Arguments, and Attachments


Le module Views offre une quantité incroyable de fonctionnalités, en particulier lorsqu'il est associé à une utilisation intelligente des champs Référence de nœuds. Lorsque vous mettez les nodes de votre site en relation avec des champs Référence de nœuds, cette relation peut facilement mise à profit pour créer des views très utiles.

A titre d'exemple, je vais réaliser une vue pour un site de musique. Dans ce site, il y aura trois types de contenus liés les uns aux autres : nodes Groupes (« Black Eyed Peas », « Linkin Park », etc), nodes Album (« Back in Black », « Bat Out of Hell », etc), et Événements (concerts, télévision, passages, etc).

uvra-1.png

Ces différents types de contenus ne disposent chacun que des champs minimaux pour la démonstration des fonctionnalités de Views dont il sera question dans cet article. Par exemple, le type de contenu « Événements » ne dispose pas de champs pour les dates ou les lieux - ils pourront facilement être ajoutés par la suite.

Pour associer les trois types de contenus, les deux types de contenus « Album » et « Événement » disposent d'un champ Référence de noeud qui pointent vers le node « Groupe ». Par exemple, quand un nouveau node « Album » est créé, l'utilisateur est obligé de choisir le groupe adéquat.

uvra-2.png

Pour l'utilisation des ces types de contenus, j'ai créé plusieurs nodes de chaque type et j'ai donc quelques données pour travailler avec lors de la création de la vue :

uvra-3.png

Le but de cet article est de pouvoir créer une page qui affichera un seul node d'un groupe avec la liste de ses albums et événements. Voici un court exemple de ce que je souhaite obtenir :

Infos sur le Groupe
[Nom du groupe]

Albums
[Album 1]
[Album 2]
[Album 3]

Événements
[Événement 1]
[Événement 2]
[Événement 3]

Il y a plusieurs façons d'obtenir cela - on pense à Panels (context) et aux blocs (visibilité) - mais je vais employer une méthode qui n'utilise que les fichiers attachés de Views. Car quelle que soit la méthode choisie, on est presque certains au final de devoir créer des views, alors pourquoi utiliser du code ou des modules supplémentaires ?

(Dans la version française de Views, Attachment a été traduit par Fichiers attachés. NdT)

Un fichier attaché Views est simplement un mode d'affichage de Views qui est rattaché à un autre affichage Views (habituellement un affichage de page ou de bloc). En simplifiant les choses, cela pourrait ressembler à ceci :

uvra-5.png

Ce schéma montre qu'un affichage de type Page ou Bloc (ainsi que d'autres types d'affichages apportés par des modules tiers) peuvent avoir n'importe quel nombre d'affichages associés. Sur une page, ces affichages associés peuvent se situer physiquement avant ou après l'affichage auquel ils sont rattachés.

Pour cet exemple, je vais créer une view qui a un affichage de type Page (appelé « Band Page ») et deux Affichages Associés - fichiers attachés - (appelés « Album Attachment » et « Events attachments »). Les deux Affichages Associés seront attachés à la fin de la page « Band » et nous aboutirons ainsi au résultat souhaité indiqué précédemment.

Comme d'habitude, vous pouvez télécharger tous les types de contenus CCK et les structures des Views à la fin de cet article.

Pour la première étape de création de la view, je suis allé sur la page admin/build/views/add et j'ai créé une view de type Node appelée « band_info » contenant les valeurs suivantes pour l'affichage par défaut :

Paramètres de base
Titre : Band Info
Arguments
Node : Nid (Action à mener si l'argument est absent : Cacher la vue / Page non trouvée (404))
Champs
Node : Titre
Filtres
Node : Publié Oui
Node : Type = Band

Ensuite j'ai crée un nouvel affichage de type Page, je l'ai nommé « Band page » et j'ai paramétré son chemin à band/%. Rappelez-vous, le % est juste un paramètre substituable pour l'argument Node : Nid paramétré pour l'affichage par défaut.

À ce stade vous pouvez enregistrer la view et la vérifier dans la Prévisualisation en direct en indiquant dans le champ Arguments l'ID de node d'un node « Band ». Cette view ne devrait afficher que le nom d'un groupe dont l'id de node est celui indiqué comme argument.

Maintenant, les choses intéressantes. Je vais créer un fichier attaché qui affiche tous les nodes « Albums » du Groupe dont l'ID de node est indiqué comme argument. Rappelez-vous, il n'y a rien de particulier en ce qui concerne les fichiers attachés (Attachments displays). Ce sont juste des views comme les autres, sauf que vous pouvez les associer à d'autres affichages. Pour créer l' « Attachment Albums », je commence par sélectionner Fichier attaché dans la liste déroulante au-dessus du bouton Nouvel affichage puis je clique sur ce bouton Nouvel Affichage.

uvra-6.png

Le paramétrage initial pour le nouvel affichage est simple :

Paramètres de base
Nom : Album Attachment
Paramètres de fichiers attachés
Position: Après
Attacher à: Band Page

Puisque nous voulons afficher une liste de nodes « Albums », je veux paramétrer Node : type sur Album. Pour cela, je dois faire attention à ne pas modifier les paramètres par défaut de toute la view, je veux juste modifier les paramètres pour cet affichage-là. Pour cela, dans le bloc Filtres, je clique sur Node : Type puis je clique sur le bouton Supplanter afin de ne modifier que l'affichage courant et non toute la view :

uvra-7-fr.png

Une fois que ce paramètre est supplanté, je peux le modifier à « Album » sans risque de perturber les autres affichages. Il est facile de voir si un paramètre est supplanté : il n'est plus affiché en italiques dans le récapitulatif d'affichage :

uvra-8.png

On aborde à présent le point délicat : puisque notre affichage ne montrera désormais que les nodes « Albums », comment allez-vous le filtrer avec l'ID des nodes « Groupes » ? Avec une relation, bien sûr ! Souvenez-vous, les types de contenus « Groupe » et « Album » sont reliés via un champ CCK Référence de nœud. Nous pouvons utiliser cette relation pour filtrer les nodes Albums. La première étape consistera à ajouter une nouvelle relation à l'affichage Album Attachment. Dans ce cas, je vais ajouter une relation Contenu : Band. Mais avant cela, je dois m'assurer que j'ajoute cette relation uniquement à l'affichage Albums attachments et pas à la vue entière. C'est une source d'erreurs fréquente. Observez la zone Relations, vous remarquez qu'elle est en italique ? Cela veut dire que quel que soit ce que je lui ajoute, ce sera ajouté à l'affichage par défaut - et à tous les affichages qui héritent de l'affichage par défaut. Je dois d'abord cliquer sur le lien Relations puis cliquer sur le bouton Supplanter.

uvra-9-fr.png

Une fois que c'est fait, je sais que je suis en train d'ajouter la relation au seul affichage Albums Attachments. Je vais ajouter la relation qui lie un contenu « Album » à un contenu « Groupe » - dans cet exemple, il s'agit du champ Référence de nœud Contenu : Band.

uvra-10-fr.png

Après l'ajout de cette relation, j'ai deux paramètres à configurer. L'étiquette n'est utilisée que pour identifier la relation telle qu'elle apparaît dans cette view spécifique. Lorsqu'on ajoute plusieurs relations à une view, il est utile de leur donner des noms explicites. Heureusement, Views propose des noms par défaut pertinents, je m'en tiendrai à eux.

uvra-11-fr.png

Dans le cas présent, le paramètre Exiger cette relation n'est pas nécessaire parce que je sais que l'argument filtrera tout sauf les contenus Albums que je veux voir.

La dernière pièce du puzzle concerne l'argument Node : Nid. Puisque l'affichage Albums Attachment hérite de l'argument de l'affichage Band Page, je dois m'assurer qu'il est utilisé correctement. Dans son état actuel, l'affichage essaiera de filtrer la liste des Albums avec l'argument Node ID fourni. Ce ne sera pas beaucoup de travail puisque l'argument fourni est le Node ID d'un Groupe. Je dois dire à la view d'utiliser cet argument pour filtrer les nodes Albums renvoyés par le Groupe - en utilisant la relation que je viens de paramétrer. Ce qui est plutôt facile à obtenir.

Tout d'abord, je dois cliquer sur l'argument Node : Nid pour le modifier, puis cliquer sur le bouton Supplanter pour que les modifications n'affectent que cet affichage. Ensuite, dans la liste déroulante Relation je dois choisir Band. Cela filtrera effectivement les nodes Albums renvoyés par le Node ID associé du Groupe.

uvra-12-fr.png

La dernière chose que j'ai faite à Albums attachment pour le rendre un peu plus user-friendly a été de surcharger le paramètre Entête (bloc Paramètres de base, lien Entête) pour lui ajouter ceci :

<strong>Albums</strong>

Cela affichera un bel entête au-dessus des Albums. Jetons un rapide coup d'œil à la Prévisualisation en direct avec un node ID de Groupe correct comme argument, vous obtiendrez quelque chose comme ceci :

uvra-14.png

À ce stade, l'affichage Album Attachment est pratiquement terminé. Vous pouvez ajouter quelques champs supplémentaires, des tris et des options d'affichage, mais notre but est atteint.

L'affichage Events Attachment fonctionne exactement de la même façon. La différence principale est que le filtre Node: Type utilise le type de contenu Events, mais tout le reste est semblable à l'affichage Albums Attachment.

En rassemblant le tout, la view finale ressemblera à ceci :

uvra-15.png

Il n'est pas difficile d'imaginer comment vous pouvez désormais utiliser ces outils pour créer toutes sortes de views intéressantes des mêmes données. Peut-être qu'une page Album ou Événement qui affichera aussi des infos sur le node Groupe associé. Peut-être ajouter une nouveau type de contenu pour les dates d'évènements, vous pouvez alors construire une view qui affiche tous les événements par lieux de tournées avec des infos sur le Groupe pour chaque date. La méthode indiquée ici est assez souple pour vous permettre d'aller aussi loin que vous le voulez avec vos données.

Michael Anello - DrupalEasy.com

Fichier attachéTailleAccèsLast download
views_relationships.zip4.39 Ko0Not yet downloaded