Voilà, voilà... Fin de l'aventure...

 

Fermeture de kolossaldrupal.org dans...


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 : afficher du contenu hierarchisé

Cet article est la traduction du billet de Michael Anello : Displaying Hierarchical Content.

Vous connaissez Michael Anello : vous avez été nombreux à lire et, je n'en doute pas ;-) , apprécier son papier sur Blueprint CSS.

Dans Displaying Hierarchical Content il aborde notamment une des fonctionnalités de Views : les relations.

Avec son accord, ses exemples ont été francisés et j'ai également détaillé le processus CCK de création des types de contenus personnalisés qu'il utilise pour l'article.

Afficher du contenu de façon hiérarchisée est un besoin courant pour les sites pilotés par bases de données. Drupal vous offre une grande souplesse pour ces opérations et vous évite d'avoir à écrire la moindre ligne de code si vous utilisez deux modules qui ont déjà fait leurs preuves.

Pour notre exemple, disons que vous allez réaliser un site sur les voitures. Il proposera une liste de marques de voitures et les modèles qu'elles fabriquent. Vous voudriez n'avoir à saisir les marques qu'une seule fois dans la base de données, puis vous voudrez vous y référer chaque fois que vous ajouterez l'un de leur modèles au site.

Dans cet exemple, je prendrais deux marques (Peugeot et Citroën) et elles auront chacune trois véhicules :

vehicule.png

Le puissant module CCK de Drupal vous permet de créer des types de contenus pour votre site. Le module Node Reference, inclus avec CCK, vous permet de paramétrer des relations hiérarchiques entre les types de contenus.

Créer les deux nouveaux types de contenus

Le type de contenu Constructeurs automobiles

Constructeurs automobiles est un type de contenu simple, auquel on a supprimé le champ Corps et qui ne contiendra pas d'autres champs supplémentaires:

  • Allez dans Administrer > Gestion du Contenu > Types de contenus > Ajouter.

  • Dans Nom, indiquez Constructeur automobile

  • Dans Type, indiquez constructeur_auto

  • Dans Libellé du champ titre, indiquez Marque

  • Pour supprimer le champ Corps, effacez simplement le contenu du champ Libellé du champ corps

  • Cliquez sur Enregistrer le type de contenu.

Si vous cliquez sur gérer les champs dans l'écran suivant, vous obtiendrez un écran qui ressemblera à celui-ci :

DHC-1.png

Le type de contenu Modèles de voitures

Ce type de contenu n'aura qu'un titre et un champ supplémentaire mais pas de corps :

  • Allez dans Administrer > Gestion du Contenu > Types de contenus > Ajouter (admin/content/types/add).

  • Dans Nom, indiquez Modèle

  • Dans Type, indiquez modele_automobile

  • Dans Libellé du champ titre, indiquez Marque

  • Pour supprimer le champ Corps, effacez simplement le contenu du champ Libellé du champ corps.

  • Cliquez sur Enregistrer le type de contenu.

  • Dans l'écran suivant, sur la ligne Modèle, cliquez sur gérer les champs.

  • Dans la zone Ajouter, dans Nouveau champ, tapez Marque de la voiture comme Étiquette,

  • Tapez marque_voiture comme Nom du champ,

  • Choisissez Node référence comme Type de données à stocker,

  • Laissez Liste de sélection comme Élément du formulaire pour l'édition des données.

  • Cliquez sur Enregistrer :

    DHC-3.png

L'écran qui s'affiche ensuite va vous permettre de saisir les paramètres du champ Modèle :

  • Cochez la case Obligatoire dans le bloc Paramètres globaux,

  • Cochez Constructeurs automobiles comme Types de contenu pouvant être référencés.

  • Laissez de côté pour l'instant les autres champs, même si vous êtes très tentés d'utiliser une vue comme référence pour le champ, au lieu du type de contenu,

  • Cliquez sur Enregistrer les paramètres du champ.

DHC-4.png

Ces préparatifs étant terminés, saisissez quelques noms de constructeurs pour le type de contenu Constructeurs automobiles et quelques modèles de voiture pour le type de contenu Modèles de voitures et reprenons le tuto de Michael Anello :

Maintenant, le truc consiste à trouver comment afficher les marques automobiles et les modèles dans une liste de liens hiérarchisée qui nous amèneront aux contenus que nous venons de créer. Cela se fait en utilisant Views Relationships.

Créons une vue nommée vehicules (Administrer > Construction du site > Views > Ajouter), avec les paramètres de base suivants :

  • Style de ligne : Champs
  • Champs : Node : Titre (sans Étiquette, mais Lier ce champ à son noeud coché)
  • Critères de tri : Node : Titre asc
  • Filtres : Type = Modèle, Node : Publié = oui

Ces quelques paramètres nous donneront une liste alphabétique de tous les modèles. C'est un bon point de départ et vous pourrez construire ce que vous voulez dessus. Pour cela, vous devrez ajouter une relation entre les véhicules et les constructeurs (bloc Relations, clic sur le bouton +) :

DHC-5B.png

Dans notre exemple, il n'y a qu'une seule relation "Contenu" disponible: la relation node reference paramétrée antérieurement. Cochez la case Exiger cette relation et nommez-la Relation Marques :

DHC-6.png

Nous ajoutons ensuite le champ nom du constructeur (bloc Champ, clic sur +), il servira à regrouper les modèles dans l'affichage. La chose importante à retenir c'est que, pour afficher la marque du constructeur, nous sélectionnons le champ Titre du type de contenu Constructeur automobile et non le champ Marque du type de contenu Modèles qui, lui, est un champ relationnel. La nuance est subtile mais importante. En sélectionnant le champ Node : Titre vous avez la possibilité d'utiliser une relation - vous utiliserez la relation Marque.

Indiquez Marque comme étiquette et cochez les cases Exclure de l'affichage et Lier ce champ à son nœud.

DHC-7.png

L'option Exclure de l'affichage ne supprime pas le champ Titre mais seulement son affichage - nous le gérerons dans le regroupement dans une minute.

À ce stade vous devriez obtenir, dans la Prévisualisation en direct, une liste alphabétiques des modèles de voitures sans aucune indication quant à leur marque.

Pour afficher les données de façon hiérarchique (et voir les marques), nous devons regrouper les champs par nom de marque. Pour cela, dans le bloc Paramètres de base, cliquez sur le petit rouage en face de Style : non mis en forme puis sélectionnez Marque dans la liste déroulante Champ de regroupement et cliquez sur le bouton Mise à jour. Si nous n'avions pas modifié auparavant l'étiquette de Marque, nous aurions eu le choix entre deux libellés Node : Titre, ce qui aurait prêté à confusion.

Voilà qui est fait ! Regardez la Prévisualisation en direct et vous verrez s'afficher le résultat souhaité. N'hésitez pas à revenir sur Node : Titre du type de contenu Marques pour effacer l'étiquette Marque (souvenez-vous qu'elle n'était mentionnée que pour nous aider à choisir le bon champ de regroupement). Vous aurez alors une vue ressemblant à celle-ci :

DHC-8.png

Il est important de noter que tout ce qui précède aurait aussi pu être réalisé en paramétrant les marques de voitures comme taxonomie et non comme type de contenu spécifique. L'utilisation de la taxonomie aurait été appropriée si vous n'aviez pas besoin d'une description détaillée pour les marques de véhicules. Dans notre exemple, on a supposé que le type de contenu Constructeurs automobiles allait ensuite être enrichi avec d'autres champs décrivant la marque (par exemple nationalité, siège social, nombre de salariés, logo, etc).

La présentation des données, leur mise en forme peut se faire via les styles ou via des fichiers gabarits spécifiques.

Michael Anello - DrupalEasy.com

Fichier attachéTailleAccèsLast download
vehicules_constructeurs_cck.txt886 octets17il y a 3 an 29 semaines
vehicule_cck.txt2.43 Ko20il y a 2 an 39 semaines
vehicules_views.txt2.77 Ko21il y a 1 an 24 semaines