Où l'on reparle de la hiérarchie

Version imprimableEnvoyer à un ami

Bonsoir !

Il y a à peu près un an, dans les premières semaines de Drupalistic, j'avais rédigé un billet au titre quelque peu provocateur : Arrêtez de vouloir faire du hiérarchique ! Le propos en était la catégorisation des informations dans un site Drupal, et le billet cherchait à montrer que la difficulté à reproduire une structure hiérarchique "à la SPIP" dans Drupal était plus un atout qu'un inconvénient.

Il y a quelques semaines, un lecteur de la 11ème heure a laissé sur ce billet un commentaire dont la substance était "OK mais comment faire autrement quand on a toujours fait des structures hiérarchiques et donnez nous des exemples". Je n'ai pas pris le temps de répondre sur le moment car je voulais développer un peu ma réponse. Par contre je donnerai peu d'exemples parce que la modélisation-fiction, ça me barbe profondément. Mais quelques uns quand même pour être plus claire.

D'abord, précisons les choses : Drupal n'est pas allergique à la hiérarchie. En fait il permet même de hiérarchiser deux entités : les contenus entre eux (module Book) et les catégories entre elles (module Taxonomy). J'insiste sur le "entre eux" et "entre elles" car en réalité, la difficulté commence quand on veut subordonner les contenus aux catégories. Par exemple si vous avez un vocabulaire géographique Régions > Départements et souhaitez qu'un contenu taggué Gironde soit automatiquement inclus dans Aquitaine. Pour Drupal, Gironde et Aquitaine sont deux termes différents (comme les noeuds, les termes Drupal sont égaux en droits et en dignité à ceci près qu'ils font forcément partie d'un - et d'un seul - vocabulaire*) et associer un terme enfant à un noeud ne lui associe pas de facto le terme parent. Il faut pour cela un module complémentaire (Hierarchical Select est le plus courant). En fait une telle structure réclamerait que Aquitaine ne soit pas un terme lui-même.

Il existe deux moyens d'organiser des informations : hiérarchique et associatif. Drupal fonctionne de façon associative : un terme 1 est associé à un noeud A. Le terme 2 pourra aussi être associé au noeud A. Mais les deux associations sont indépendantes l'une de l'autre.

La forme hiérarchique nous est la plus familière car c'est celle à laquelle la documentation moderne, née il y a un peu plus d'un siècle, nous a habitués. Sans doute le nom de Melvil Dewey dira-t-il quelque chose à ceux qui ont fréquenté le CDI de leurs collège et lycée, ou vont régulièrement dans une bibliothèque municipale. Ce bibliothécaire américain est l'inventeur de la classification décimale qui porte son nom. Strictement hiérarchique, elle organise les sujets en dix classes, qui se subdivisent en dix sous-classes, elles-mêmes subidivisées. A chaque classe et sous-classe correspond un indice (un numéro). Cette classification, ainsi qu'une autre un peu moins connue parce que plus complexe, la Classification Décimale Universelle (en toute modestie) mise au point par Paul Otlet et Henri La Fontaine au début du XXe siècle (pour tenter de pallier les carences de la CDD qui est très occidento-christiano-américano-centrée), sont les plus utilisées parce qu'elles répondent aux deux principales finalités du traitement documentaire : la fonction d'indexation (de quoi ça parle) et la fonction de repérage (où je le trouve). Un document ne peut être rangé que dans UN rayon.

Mais ces classifications hiérarchiques relèvent d'une vision spécifique, occidentale (cartésienne ?) du monde. Au milieu de l'entre-deux-guerres, un bibliothécaire indien, Ranganathan, mettait au point une manière complètement différente de classer les savoirs : c'est la classification à facettes, également appelée Colon Classification en raison de l'usage qu'elle fait de certains signes de ponctuation dans l'énoncé des indices (en anglais colon désigne les deux-points).

Les facettes sont en quelque sorte les aspects, les dimensions d'un sujet. Ranganathan a défini 5 facettes fondamentales : la personnalité, la matière, l'énergie, l'espace et le temps (en anglais PMEST). Les deux dernières ne posent aucune difficulté ; les trois premières, plus absconses à nos esprits limités d'occidentaux rationalistes, correspondent en gros et respectivement au sujet principal du document, aux matériaux des entités considérées et aux actions, processus ou relations entre entités (seule la première facette est toujours présente). Si vous souhaitez en savoir plus sur la classification elle-même, trouver des exemples pour mieux comprendre, vous trouverez sans peine sur Internet tout ce qu'il vous faut, par exemple cette page de SavoirsCDI sur Ranganathan. Elle reprend notamment l'analogie avec notre numéro de sécurité sociale où chaque groupe de numéro est en quelque sorte une facette de notre identité : sexe, moment de notre naissance, lieu de naissance, etc.

Ainsi, même si l'indice résultant d'une attribution de facettes à un document est ordonné (PMEST), la classification de Ranganathan est de type associatif. Un document est analysé dans ses différentes dimensions d'une façon beaucoup plus riche que dans une classification hiérarchique. Malgré tout son intérêt, la Colon Classification est peu utilisée en documentation parce que, des deux fonctions précédemment évoquée, elle répond mal à la fonction de repérage. Mais la ressource numérique se prête beaucoup plus facilement au découpage en facettes. Et la taxonomie drupalienne se moule parfaitement à cette logique.

Une structuration de site "parfaitement" drupalienne cherche donc non pas à ranger l'information, mais plutôt à l'analyser : quelles sont ses caractéristiques fondamentales ? Quelques exemples (comme promis) :

  • votre site vend des produits : quels sont les critères sur lesquels les clients voudront faire leur choix : une gamme de prix, une couleur, une matière ... ?
  • votre site publie des informations : comment voudra-t-on les retrouver : par thème, par région géographique considérée ... ?

Une fois vos caractéristiques fondamentales bien identifiées, faites un vocabulaire de chacune et goûtez à la puissance de la taxonomie. Notez toutefois que la taxonomie n'est pas le seul moyen de catégoriser vos contenus (une catégorie, fondamentalement, c'est un groupe de contenus, et Drupal offre de nombreux moyens de regrouper vos contenus).

Mais l'objectif est que le visiteur de votre site trouve ce qu'il cherche (pas qu'il comprenne comment vous avez rangé vos contenus). L'organisation des menus, une mise en valeur pertinente de quelques catégories fondamentales, et un module recherche avancée comme Faceted Search ou Apache Solr Search doivent lui permettre de cheminer facilement vers l'information, en ne se heurtant jamais (ou le moins possible) ni au bruit, ni au silence documentaire. Et là c'est à vous de jouer !

---

(ps. Réflexion à la relecture de ma remarque sur les termes égaux entre eux mais membres d'un vocabulaire. Je crois que la difficulté pour ceux qui viennent d'un CMS hiérarchique, tel que SPIP, c'est qu'en réalité ce sont les termes Drupal qui fonctionnent comme les articles SPIP : rattachés à une seule entité (le vocabulaire ou un autre terme), elle-même éventuellement enfant d'une autre. Les noeuds ne sont pas enfants des termes comme les articles SPIP sont enfants des rubriques.)

Bien vu!

Je manque encore d'entrainement sur les taxonomy, trainant encore de la hiérarchie, mais je m'améliore. Merci pour cet article qui a le mérite de me faire mettre le doigt sur 2/3 trucs :)

efficacité

great ! alors je n'aurai pas perdu ma soirée ;-)

une réponse aux exigences du SEO ?

Merci Marie-Hélène pour votre article, ainsi que celui de l'année passée, qui répondent en partie à mes interrogations sur la capacité de Drupal à répondre aux exigences du référencement.
Pour m'expliquer, je prendrais un exemple :

- Dans des CMS comme spip ou Joomla, la navigation dans le frontend et nécessairement cohérente avec celle du backend. Tous les contenus devant être rangés dans des "boîtes" (les catégories et sections de Joomla ne servant qu'à faciliter le travail de l'administrateur).

Une arborescence de ce type :

rubrique 1
sous-rubrique 1
article 1.1
article 1.2
...
sous-rubrique 2
article 2.1
article 2.2
...

Donnera forcément un menu de navigation hiérarchisé de façon identique ainsi qu'une url de type www.monsite.com/menu1/sous-menu1/contenu1.1.

Mon expérience en matière de référencement me pousse à chercher des solutions pour proposer des menus de navigation les plus structurant possibles pour un visiteur, mais aussi les plus simples possibles pour les moteurs notamment au niveau de l'URL. Ces 2 objectifs entrent un conflit dans un site abritant beaucoup de contenu nécessitant une hiérarchisation et une profondeur importante dans l'arborescence.

Pour la même hiérarchie ci-dessus, il peut-être bon de générer une url la plus simple possible par ex. : www.monsite.com/contenu1.1

Au vu de vos explications, il semble que Drupal soit capable de le faire : si j'ai bien compris, les contenus ne seraient pas nécessairement classer dans une vue hiérarchique mais se verrait attribuer des tags, ce qui permettrait d'appeler un article ou une liste d'article n'importe ou dans la navigation c'est-à-dire la structure perçue par l'utilisateur et que nous lui proposons.

pathauto

Bonsoir

Dans drupal l'url est totalement indépendante de la "localisation" du contenu (plus exactement le contenu étant "localisé" à la racine, l'adresse système est de type racine/node/# où # est le numéro du noeud). Le module Path permet de créer des alias d'url, et Pathauto de les automatiser. Il est parfaitement possible de créer des URL de contenu de la forme racine/contenu1 et des URLs de liste (vue) de la forme racine/terme.

(question) Pour la SEO, il vaut mieux une URL racine/contenu1 qu'une URL racine/catégorie/sous-catégorie/contenu1 ?

des url pertinentes

Bonsoir,

une URL racine/catégorie/sous-catégorie/titre-de-l-article-1 n'est pas pas forcément une mauvaise chose dès lors qu'elle contient des mots-clés... mais pas trop non plus, cela finissant par créer du "bruit".

Les modules URL rewriting de la plupart des cms permettant de de générer des uri basées sur la structure du site ainsi que le titre de l'article, dans certains cas on se retrouve avec des url inutilement longue.

Selon mon expérience, des URL trop complexes révèlent 2 situations :

1. Le site est mal structuré, l'essentiel du contenu du site est rangé "au forceps" dans une seule rubrique, c'est souvent ce qui se passe quand on utilise a mauvais escient un template tout fait, comme c'est souvent le cas avec Joomla ou Wordpress.

2. des sites à fort contenu, type historique par exemple, nécessite une hiérarchisation importante du contenu et parfois beaucoup de profondeur dans la navigation, générant de nombreuses pages intermédiaires ou tunnels. Dans ce cas, il peut-être très intéressant de simplifier les uri pour n'en retenir que la substantifique moelle.

Un CMS comme Joomla, malgré ses qualités, n'offre pas de possibilité dans ce cas de figure. A moins de très bien maitriser l'url rewriting dans Apache...
Drupal semble offrir une gestion beaucoup plus fine du contenu combinant hiérarchie et classification qui n'est pas sans rappeler les thésaurus utilisés en documentation.

un grand merci pour ces

un grand merci pour ces précisions !

Trés bel article

Je découvre petit à petit Drupal, il est vrai qu 'au départ ce manque apparent de hiérarchisation est un peu déroutant, mais je pense qu' il fait toute la puissance de ce cms. Drupal est en fait utilisable et extensible pour tout type d' impératif métier. Je pense qu 'il est plus qu 'un gestionnaire de contenu textuel ou autre, il est avant tout un framework qui permet de structurer ses sites et application à sa guise. Des modules comme cck et views sont la cerise sur le gâteau.
Merci sur ce petit topo qui dépeint parfaitement l 'extrême verticalité de nos esprit occidentaux

framework

Merci ; oui, Drupal est un framework et, "optionnellement", un système de publication de contenus. Même si moi je le connais et l'utilise essentiellement pour cette seconde dimension, il a clairement été pensé pour faire beaucoup plus.

Poster un nouveau commentaire

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