Drupal : Views 2 et Attachment

Un des modules complémentaires les plus indispensables de Drupal est sans conteste Views, ou plus exactement Views 2, comme l'atteste le nombre de téléchargements de ce module. Ce module est d'une grande puissance mais pas nécessairement très intuitif à prendre en mains.

A quoi sert Views ?

Views permet de générer des "vues". Une vue c'est une façon d'organiser vos contenus.

Prenons un exemple. Sur Excelabo, il y a des pages décrivant chacune une astuce excel. Sur d'autres sites ce pourrait être des news de blog ou des photos.

On peut bien sur appeller chaque page en tapant son adresse dans le navigateur et/ou en faisant un lien dans le menu s'il n'y en a pas trop). Mais comment lister les pages partageant certaines caractéristiques comme un auteur, une date, un mot clef  ? On peut le faire de différentes façons, notamment, si les pages ont été indexées en utilisant mot clef (c'est à dire un terme de taxonomie en langage Drupal) un terme de taxonomie (autrement dit un mot clef dans le langage courant), on peut appeller la page comme ceci : http://monsite.com/taxonomie/term/monmotclef. En faisant cela, toutes les pages contenant ce mot clefs seront collées les unes en dessous des autres. Si chacune est un peu longue, ce n'est guère convivial !
Views permet de faire la même chose (et bien plus !) mais en choisissant ce que l'on veut afficher.

Comment afficher le titre et la date de mise à jour de toutes les pages suivant un critère particulier ?

Il faut bien sur que le module views soit installé et activé.
En ouvrant views (http://monsite.com/admin/build/views) vous arrivez sur une liste comportant des affichages par défaut que vous pouvez activer (c'est très utile notamment pour comprendre comment ça marche !).
Nous allons créer une vue.

Type de vue

Cliquez sur l'onglet ajouter. donnez un nom, une description, une étiquette suivant les instructions. En bas de la page vous devez choisir un type de vue.
En clair : on vous demande quel type d'information vous voulez afficher. Voulez vous montrer un résumé des pages, ou bien une liste de termes de taxononomie ou bien encore des utilisateurs ?

Après validation, vous ouvrez la page de configuration de votre vue.Repérez le bouton "enregistrer" et n'oubliez pas de vous en servir régulièrement, on n'est jamais à l'abri d'une coupure réseau...

Paramètres par défaut

En haut à gauche vous avez un onglet "paramètres par défaut". On commence par là. L'aide en ligne (téléchargez le module advanced help pour l'obtenir) donne une description de chaque item.

Champs

Dans la colonne centrale, en bas, vous allez choisir les champs que vous voulez afficher sur la page. Cliquez sur le + et choisissez par exemple node/titre, node/résumé, node/date de mise à jour. Vous voyez qu'il y a du choix ! Validez. Pour chaque champ, vous aurez à choisir des paramètres, notamment le titre du champ. Laissez un blanc si vous ne voulez pas voir "titre :" devant chaque ligne par exemple, de même choisissez le format des dates qui vous convient. Les petites flèches à droite de champs vous permettent d'organiser l'ordre de d'affichage.
Vous allez obtenir des messages d'erreur pendant ce processus, ne vous en occupez pas.

Filtres

Dans la colonne de droite en bas, "filtres" vous permet comme l'indique son nom de réduire la sélection des pages à afficher suivant vos critères. Restreignez par exemple la sélection aux pages de type blog ou à celles ayant un terme de taxonomie particulier comme "débutant" dans mon exemple. Vous pouvez mettre plusieurs filtres.
En validant votre choix, vous allez devoir là encore préciser certains paramètres. Une phrase un beu obscure s'affiche : "Cet élément n'est pour le moment pas exposé. Si vous l'exposez, les utilisateurs pourront changer le filtre lorsqu'ils l'affichent." Quésako ? En clair cela signifie que par défaut, la vue n'affiche pas les critères qui on servi à la sélection. Autrement dit les utilisateurs ne voient pas que vous avez demandé de n'afficher que les pages taggées avec le mot débutant. Mais vous pouvez avoir envie de laisser vos lecteurs choisir. Ca revient à créer un moteur de recherche. D'autant que vous pouvez mettre ainsi plusieurs filtres qui vont se combiner. Si vous cliquez sur afficher, vous aurez accès à d'autres options (faciles à comprendre), et par exemple vous pourrez permettre à vos lecteurs de choisir entre débutant, expert ou avancé. Inutile en effet de faire 3 pages différentes dans ce cas.

Tri

Vous pouvez choisir ici l'ordre dans lequel vos pages doienvent être listées. Ce n'est pas nécessairement dépendant des champs affichés. Vous pouvez par exemple trier par date de mise à jour inverse sans pour autant afficher la date de mise à jour dans les champs.

Paramètres d'affichage

La colonne de gauche règle les paramètres de l'affichage. Je vous laisse découvrir comment régler la pagination, le type d'affichage en liste, grille ou tableau... Faites des essais vous comprendrez vite.

Arguments

Voilà un point plus complexe à comprendre.
Un argument fonctionne comme une variable. Au lieu par exemple de créer une vue pour chaque page dont le titre commence par A, puis la même pour la vue affichant les pages B... on crée une seule vue et on lui passe la lettre A, B, C... en argument. L'argument peut être une valeur, un terme de taxonomie, voire une donnée que l'on récupère à l'aide d'un code PHP.
L'argument est utilisé pour spécifier l'adresse de la page et il apparait dedans. Dans le cas où l'argument dépend d'un code PHP, ce qui est passé comme argument c'est la valeur renvoyée par le code. On aura ainsi une adresse de type http://monsite.com/mavue/a ou http://monsite.com/mavue/b.
Toutes les vues n'ont pas nécessairement besoin d'un argument.

Définir comment la vue doit être affichée

Pour le moment, la vue n'est pas affichée. Pour cela il faut créer un affichage. 
Il y a plusieurs façons de le faire.

Mode page

On peut afficher la vue dans une page. Pour cela, dans le menu déroulant situé dans la colonne de gauche en dessous de "paramètres par défaut", sélectionnez page et cliquez sur nouvel affichage.
L'écran ne change guère : les paramètres par défaut créés précédemment sont recopiés dans l'affichage qui vient df'être créé. Avec une différence cependant, le bloc "paramètres de la page". Il vous permet de définir un chemin, par exemple pages-speciales/pages-debutants pour la page qui va afficher votre vue (les termes de page, vue, affichage sont tellement proches qu'il est parfois difficile de s'y retrouver !). L'adresse de la page sera donc http://monsite.com/pages-speciales/pages-debutants.
Vous pouvez également si vous le souhaitez indiquer comment cette page doit être ajoutée à un menu (ceci peut aussi se faire plus tard via l'interface menu).

Mode bloc

Vous pouvez aussi afficher votre vue dans un bloc. C'est pratique par exemple pour créer un bloc de type "derniers commentaires ajoutés sur le site".
Dans le menu déroulant, sélectionnez block et dans paramètre des blocs, donnez un nom à ce bloc. Il n'apparaitra nulle part tant que, via l'interface de gestion des blocs, vous n'aurez pas indiqué où le bloc doit être affiché.

Mode fichier attaché

Une vue peut aussi être affichée... dans une vue !
Par exemple : vous voulez faire une page avec en haut un sommaire alphabétique et en dessous les termes d'un vocabulaire de taxonomie comme c'est le cas sur la page motsclefs d'excelabo. Cette page comporte en faite deux vues en une. En bas une vue affichant les termes du vocabulaire motsclefs, avec comme argument la première lettre du terme. En haut, la même vue mais on limite l'affichage à la première lettre du terme.
On définit donc en premier les paramètres par défaut puis on crée la page puis le fichier attaché. 

Pour que cela fonctionne, il faut découvrir un nouveau bouton : supplanter.
En effet, en enregistrant "normalement" les paramètres du fichier attaché, vous allez changer les paramètres par défaut. En cliquant sur le bouton supplanter, vous indiquez à Drupal que les paramètres en cours de modification doivent prendre le pas sur ceux définis par défaut.

Il faut aussi définir (en bas à gauche) si le fichier attaché hérite ou non des arguments définis dans l'affichage par défaut. Si vous voulez faire un affichage comme celui de la page motsclefs, il ne faut pas cocher la case "hériter". 

Pour voir les paramètres à utiliser pour créer ce genre de pages, je vous invite à activer la vue par défaut "glossary", à la dupliquer (pour ne pas faire de bêtises !) et à bien regarder les paramètres utilisés sur l'affichage page et sur celui fichier attaché. Vous pourrez ensuite créer plus facilement votre propre vue personnalisée. 
Update : dans la version 2.2 de views il y a un petit bug qui fait disparaitre la liste alphabétique en haut quand on clique sur une lettre. Pour rétablir l'affichage correct, voir le commentaire #6 sur cette page : Un des modules complémentaires les plus indispensables de Drupal est sans conteste Views, ou plus exactement Views 2, comme l'atteste le nombre de téléchargements de ce module. Ce module est d'une grande puissance mais pas nécessairement très intuitif à prendre en mains.