Structurer un site Drupal

Version imprimableEnvoyer à un amiversion PDF

Bonsoir,

Peu, voire aucune activité récente sur ce blog car je m'occupe de mettre la dernière main à un petit réseau social "sur mesure" pour ma famille. Si je peux je ferai une étude de cas sur la question, ça prend évidemment beaucoup de temps mais c'est vraiment sympa.

J'avais cependant promis de compléter mon dernier message, sur un problème qui perturbe manifestement beaucoup les débutants, surtout ceux qui viennent de la concurrence (comprendre : d'un autre CMS) : structurer un site avec Drupal. Profitant de quelques instants avant une fin de semaine chargée, j'ajoute les quelques réflexions que j'avais en tête.

Ne cherchez pas à reproduire une structure dont vous avez l'habitude

Soyez assez souple pour repenser complètement la façon dont vous structurez un site. Drupal se distingue trop des CMS classiques sur ce point. Comprenez d'abord la logique Drupal, cherchez ensuite comment faire rentrer vos données dedans. Vous verrez que les possibilités sont vraiment très grandes une fois qu'on a pigé le truc. Vous pourrez mettre une dose de hiérarchique, ne croyez pas que j'y sois foncièrement allergique ; mais quand vous saurez comment la mettre vous aurez moins de mal.

J'insiste tout de même sur le fait qu'on peut se passer complètement de hiérarchisation dans la structure d'un site Drupal.

Pensez accès plutôt que classement

Le point essentiel à bien comprendre, c'est que vos visiteurs ne cherchent pas des étagères et des tiroirs bien ordonnés ; ils veulent accéder à l'information que vous leur proposez. Il importe donc de définir quels publics vont venir sur votre site et quel pourra être leur raisonnement par rapport à vos données.

On peut penser à plusieurs types de publics possibles :

  • ceux qui savent ce qu'il y a sur votre site et cherchent une information précise (par exemple : votre site propose des recettes de cuisine et tel visiteur veut la recette de la tomate-mozzarella)
  • ceux qui savent ce qu'il y a sur votre site mais ne cherchent rien de précis (par exemple : votre site vend des livres et tel visiteur voudrait offrir un bon roman d'heroic-fantasy à son filleul adolescent)
  • ceux qui ne savent pas ce qu'il y a sur votre site mais sont près à s'y intéresser (par exemple : votre site présente l'association des Esitériophiles anonymes et tel visiteur, dont la curiosité a été piquée, est prêt à en savoir plus)

Pour le premier il faudra un bon vieux moteur de recherche.

Pour le deuxième, la taxonomie vous rendra de fiers services : pour regrouper ensemble tous les livres par type (les romans, les BD, etc.), et par public (enfants, ados, adultes), et par genre (fantastique, aventure, romance...) ; vous permettrez à votre visiteur d'affiner petit-à-petit sa recherche, mais il pourra l'aborder comme il veut (chercher d'abord par genre, puis par public, ou d'abord par type, puis par genre). La taxonomie permet de croiser les catégories : plus besoin de ranger les livres, le rêve du libraire !!

Pour le troisième, il faudra quelque chose de plus linéaire (dans Drupal, un book pourra être parfait) pour la partie sur l'histoire des titres de transports, mais il faudra éventuellement pouvoir proposer des comptes-rendus d'ouvrages sur le sujet, des comptes-rendus des réunions de votre association, la date des prochaines, des liens vers d'autres sites aussi passionnants, un forum pour des annonces d'échanges entre collectionneurs, etc. C'est là qu'interviennent les types de contenu.

Pensez type de contenu plutôt que rubrique

Le CCK est quasiment indispensable dans un site Drupal, au point que dans Drupal 7 on n'aura même plus besoin d'aller le chercher ailleurs. Quand vous modélisez vos données, classez-les par type en fonction des informations significatives qui leur sont attachées. Pour reprendre l'exemple de nos ésitériophiles [oui, moi aussi j'ai dû vérifier l'orthographe la deuxième fois que je l'ai écrit], chaque partie (la documentation sur les titres de transport, les comptes-rendus d'ouvrages, de réunions, les dates, les liens...) fera l'objet d'un type de contenu (bon pour les liens, vous pourrez faire un menu) car chaque contenu regroupe des informations différentes :

  • la documentation est constituée de pages (un titre, un texte)
  • les comptes-rendus d'ouvrages auront besoin de références bibliographiques en plus du compte-rendu lui-même
  • les dates de réunion auront besoin d'une date, d'une heure, d'un lieu, d'un ordre du jour,
  • etc

Bien sûr, vous pourriez vous contenter de faire des articles pour tout cela, et en gros tout mettre dans le corps du texte. Mais alors, comment retrouver facilement le compte-rendu de la magistrale somme De esiteriophila ad usus vulgus pecum (je vous demande un peu ???) ? Alors que si son titre est bien distinct du compte-rendu lui-même, vous pouvez même ajouter un lien vers un libraire en ligne pour permettre à vos visiteurs d'acheter le livre. Et comment classer les réunions par date pour avoir un bel agenda ? Alors que si la date est "connue" de Drupal, isolée dans un champ bien à elle, vous pouvez même programmer l'envoi d'un mail rappelant à vos adhérents que vous les attendez demain soir... Retenez : des informations isolées sont des informations récupérables par la machine.

L'autre intérêt de distinguer les types de contenu, outre celui de pouvoir les structurer correctement, est celui de pouvoir leur affecter

  • des vocabulaires de taxonomie distincts
  • des paramètres de thèmes distincts (affichage ou non de l'auteur, etc.)
  • des templates distincts

En d'autres termes, de sectionner visuellement votre site. Vous pourrez donc faire un site très clair, sans problème (mais avec un peu de travail).

Ajoutons enfin la possibilité de distinguer par rôle qui pourra poster tel ou tel type de contenu.

En conclusion, car il est tard

Structurer un site Drupal n'est pas plus compliqué que dans un système plus classique. Il suffit pour cela de comprendre qu'une structure (rubriques, catégories...) ce n'est jamais que des regroupements de contenu, selon certains critères. La force de Drupal est de vous laisser la liberté de définir ces critères, puisque par défaut aucun noeud n'est lié à aucun autre. Le module Views vous permettra d'exploiter ces critères avec beaucoup de finesse.

Analysez donc tous les moyens que vous offre Drupal pour regrouper des contenus (par terme de taxonomie, par type de contenu, par parent/enfant dans le cas du book, par un champ dans un même type de contenu...), comment chacun fonctionne, et organisez l'utilisation que vous allez en faire de la façon la plus pertinente possible par rapport à vos données (et par rapport à ceux qui les mettront en ligne, selon les permissions que vous voulez leur donner).

-----

Je suis en déplacement professionnel toute la fin de la semaine, n'attendez pas une grande réactivité.

un truc en plus

Je fais remarquer une chose : je ne parle pas du tout des menus. Je l'ai dit et répété plusieurs fois sur les forums de drupalfr ces derniers jours : un menu n'est pas une rubrique (mais une liste de liens), on ne structure pas un site Drupal avec les menus. Il ne serviront qu'à donner accès, par exemple à la "vue" présentant tous les articles, ou à celles présentant tous les ouvrages correspondant aux termes "romans", "BD" et "essais".

les menus de Drupal

Je ne serai pas aussi radicale que toi sur l’utilisation des menus. Un menu permet de hiérarchiser intellectuellement l’information proposée au lecteur, donc de proposer visuellement une architecture de l’information. La possibilité qu’offre Drupal de lier tout node à un menu, (ou d’ajouter un lien vers n'importe quel node dans un menu) quelque soit son type de document offre une souplesse énorme. Toute structure "visible" d’un site (taxo, Book, type de node, "rubriques") ne s'exprime de toute façon que par des liens utiles au lecteur. En cela, un menu bien pensé et bien hiérarchisé peut proposer une structure intellectuelle efficace.

Thierry Buquet

Salut Thierry, Le problème

Salut Thierry,

Le problème est la confusion entre un menu drupal et une rubrique au sens spipien ou une catégorie Joomla! (je la connais bien, je l'ai faite aussi au début : le problème est que quand tu découvres ton install drupal, tu es connecté en uid 1 (tous les droits) donc dès que tu crées un contenu, tu as accès aux paramètres de menu). Le lien direct vers un contenu dans un menu est à mon avis quelque chose d'exceptionnel à faire (pour la page contact ou la page mentions légales par ex), la bonne pratique est de lier vers des listes de contenus parce que elles seront dynamiques et qu'il sera facile pour les contributeurs d'alimenter ces listes. La gestion des menus dans drupal (surtout depuis un noeud) est quelque chose d'extrêmement complexe (parce que tous les items de tous les menus sont exposés) et qu'il ne faut pas laisser aux utilisateurs lambda. Si encore on pouvait à cet endroit n'exposer qu'un seul menu, ce ne serait pas très compliqué - mais alors cela s'appellerait une rubrique SPIP puisqu'on ne pourrait créer qu'un seul lien vers le noeud dans un seul menu.

Après, je suis parfaitement d'accord avec l'idée qu'un menu bien organisé est essentiel pour la navigation du visiteur. Mais le menu dans Drupal n'est qu'une façade, pas une structure. Les noeuds ne sont pas rangés dans un menu.

Un autre problème vient de l'ambiguité du mot "hiérarchie". Que hiérarchise-t-on ? Des catégories entre elles, des contenus entre eux, des contenus "dans" des catégories ? A chacun de ces cas correspond une solution différente, et elles se mêlent entre elles.

Concrètement, si tu veux afficher une structure de type :

  1. Géographie
    1. Pays
      1. France
      2. Etats-Unis
    2. Climat
      1. chaud
      2. froid

Tu peux l'obtenir de 25 façons différentes :

  • Un vocabulaire, 2 termes de premier niveau, chacun deux termes de second niveau
  • Un type de contenu Géographie, 2 vocabulaires associés, chacun deux termes
  • Un book Géographie, 2 pages enfants de premier niveau, chacune deux pages enfants de second niveau
  • Un seul vocabulaire, sans aucune hiérarchie, et un menu bourré d'items parents/enfants vers les pages taxonomy/term correspondant
  • etc.

Je n'ai pas le temps de faire les 21 autres :-) (ouh là là, déjà que je devais travailler ma présentation de demain), je n'ai pas parlé de comment générer des vues "blocs" qui fassent des menus, je crois bien qu'on fera un autre billet ;-))

La seule question pour la constitution du menu est de savoir si "France" est associé à un seul contenu ou à plusieurs contenus ; en d'autres termes si l'item de menu France doit renvoyer à un contenu ou à une liste de contenus (donc, une catégorie). Un item de menu peut renvoyer aux deux ; en cela, le menu n'est pas un élément structurant. C'est juste de la façade (ce qui ne veut pas dire que la façade n'a pas d'importance ; c'est seulement pas le sujet de mon billet).

A bientôt,

tout dépend du type de site...

J’approuve à (presque) tout ce que tu dis, mais en fait tout dépend du type de site web que tu dois faire d’une part ; d’autre part le côté faiblement structurant (comme tu l’exposes) du menu Drupal est aussi un atout, sinon ce ne serait qu’une liste de rubriques à la Spip, très figée. Et je ne vois pas pourquoi un menu ne devrait pointer que vers des listes : c'est quand même plus rapide d'arriver directement à un contenu par le menu !
En fait, le menu peut apporter une structure "intellectuelle" de navigation, indépendante des autres classifications ou typologies des contenus (type de doc, taxo). Il faut bien séparer deux choses : 1) comment on veut présenter son information au lecteur (de façon intellectuelle, communicationnelle, pédagogique, etc.) ; 2) comment il faut structurer ses documents (type de node, taxo, books, champs cck) pour bien gérer son site. Et pour moi l’architecture 1 (la vitrine) ne doit pas forcément refléter l’architecture 2 (l’arrière boutique). "1" va bien sûr utiliser des modélisations faites en "2" ; avec le menu, on peut faire alors des choix éditoriaux très souples (afficher ou pas des contenus ou des vues dans le menu, selon l’actualité, l’évolution du site) qui ne soient pas le fruit d’une modélisation trop figée au départ, comme lorqu’on décide (choix éditorial) de mettre ou pas un node en page d’accueil ou épinglé en haut des listes. Il faut essayer de bien combiner logique informatique (conception, structuration) et logique éditoriale (rédaction). Exemple : je peux avoir dans une entrée de menu d’une "rubrique" "A" une vue qui reunit des champs CCK de différents nodes d’un type de document qu’on ne trouve que dans la "rubrique" B. Et ça, on ne peut le faire, je crois, que grâce au menu Drupal...
Bon il est tard, et je ne suis pas sur de me faire bien comprendre. En tout cas, Drupal et sa modélisation très fine nous oblige à nous re-poser beaucoup de questions sur l’architecture de l’information des sites web et c'est tant mieux !

Poster un nouveau commentaire

Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.