Classer le contenu d'un site en rubriques/sous-rubriques grâce à la taxonomie

Supposons pour ce tutoriel que vous ayez un site web contenant une série d'articles classés dans diverses rubriques et sous-rubriques qui ressemblent à ça :

  Rubrique1       (10)
  - SousRubriqueA (11)
  - SousRubriqueB (12)
  Rubrique2       (13)
  - SousRubriqueD (14)
  - SousRubriqueE (15)

L'objectif est que la Rubrique1 affiche tous les articles classés dans "Rubrique1" plus les articles classés dans les sous-rubriques de "Rubrique1" ("SousRubriqueA" et "SousRubriqueB").

Notez que l'exemple suivant fonctionnerait aussi bien si votre navigation était plus profonde (sur 3 ou 4 niveaux, par exemple), ou si votre site contenait d'autres types de nodes que "article".

1) Créer un vocabulaire correspondant à la navigation.

La première étape est de créer grâce au module taxonomy ("catégorie" dans la traduction française) un vocabulaire appelé "Rubriques" (par exemple) qui aura pour termes les rubriques et sous-rubriques correspondant à votre navigation. Une fois ce vocabulaire créé, chaque terme pointe sur une adresse du style http://www.monsite.com/taxonomy/term/XX, où XX est l'identifiant (ID) du terme.

Pour cet exemple, j'ai indiqué plus haut entre parenthèses les ID de chacun de mes termes. (Pour voir les ID de vos termes, rendez-vous dans administrer » catégories, et cliquez lister les termes en face du vocabulaire qui contient votre navigation. Vous n'avez plus qu'à cliquer sur un terme pour voir une adresse du style http://www.monsite.com/taxonomy/term/XX s'afficher dans votre navigateur, où XX est l'ID du terme.)

Bien entendu, vous n'oublierez pas de rattacher le vocabulaire créé aux nodes de type "article", afin de pouvoir rattacher les articles de votre site aux rubriques/sous-rubriques appropriées.

2) Créer la navigation proprement dite.

Il nous faut maintenant créer la navigation proprement dite. Pour ça, utilisons le module menu de Drupal.

Allez dans administrer » menus, et créez un menu dont les éléments pointeront sur les adresses du style http://www.monsite.com/taxonomy/term/XX. Ainsi, chaque élément du menu affichera les nodes rattachés au terme correspondant de la taxonomie.

Je m'arrange ensuite pour faire apparaître dans la colonne de gauche (par exemple) le menu créé ; ce menu constituera la navigation de mon site. (Pour voir comment afficher un menu, consultez le tutoriel Contrôler l'affichage de la navigation d'un site.)

Dans mon cas, le menu contient les liens suivants (bien entendu, les valeurs seront différentes pour votre site) :

  Rubrique1 = http://www.monsite.com/taxonomy/term/10
  - SousRubriqueA = http://www.monsite.com/taxonomy/term/11
  - SousRubriqueB = http://www.monsite.com/taxonomy/term/12
  Rubrique2 = http://www.monsite.com/taxonomy/term/13
  - SousRubriqueD = http://www.monsite.com/taxonomy/term/14
  - SousRubriqueE = http://www.monsite.com/taxonomy/term/15

Si je teste mon menu, tout semble fonctionner, sauf qu'avec cet exemple, Rubrique1 affichera uniquement les articles rattachés au terme "Rubrique1". C'est embêtant car il est possible que j'ai rattaché tous mes articles directement aux sous-rubriques ("SousRubriqueA" et "SousRubriqueB") et que je n'ai mis aucun article dans "Rubrique1". Autrement dit, avec cette solution, "Rubrique1" apparaîtra comme vide, alors que ses sous-rubriques contiennent des articles...

Ce que je veux, c'est afficher les articles rattachés à Rubrique1 + SousRubriqueA + SousRubriqueB quand je clique sur "Rubrique1".

L'astuce est d'ajouter /all à la fin des liens pointant vers chaque rubrique, ce qui donne :

  Rubrique1 = http://www.monsite.com/taxonomy/term/10/all
  - SousRubriqueA = http://www.monsite.com/taxonomy/term/11
  - SousRubriqueB = http://www.monsite.com/taxonomy/term/12
  Rubrique2 = http://www.monsite.com/taxonomy/term/13/all
  - SousRubriqueD = http://www.monsite.com/taxonomy/term/14
  - SousRubriqueE = http://www.monsite.com/taxonomy/term/15

taxonomy/term/10/all affiche tous les nodes rattachés au terme 10 plus tous les nodes rattachés aux sous-termes du terme 10 (dans notre cas, les termes 11 et 12), c'est exactement ce qu'on veut !

Notez que je n'ai ajouté /all qu'à la fin des liens pointant vers "Rubrique1" et "Rubrique2", je n'ai pas touché aux liens des sous-rubriques. Cela dit, si vos sous-rubriques contenaient des sous-sous-rubriques, il faudrait également leur rajouter /all.

Merci pour l'article Ce qui

Merci pour l'article
Ce qui serrait intéressant c'est de créer les primary "dynamiquement" a partir d'une vocabulaire. Comme ça on rajoute un menu simplement en rajoutant un therme au vocabulaire.
EDIT: Je sais qu'il existe Taxonomy menu mais je le trouve vraiment pas assez souple... Impossible par exemple de créer le menu dans primary link.

Bonjour, J'ai testé à

Bonjour,
J'ai testé à l'instant la méthode car je crée un site de réseau d'associations et je souhaite utiliser la taxonomie en guise de moteur de recherches multi-criteres (recherche par type d'action ou par public cible ou par localisation).
Mais je me heurte à un souci : en ouvrant une page http://www.monsite.com/taxonomy/term/10 la mise en page saute, le theme n'est plus utilisé.... Quel est le pb?
Merci de m'aider! Et bonne année!

PS : Je suis ouverte à toute autre proposition pour atteindre ce but de recherches multi-criteres.

Un grand merci pour ce

Un grand merci pour ce tutoriel, grâce a vous, j'ai enfin compris la logique de la taxonomie et résolu mon problème de lien pointant vers des news d'une certaines catégories,

Poster un nouveau commentaire

Le contenu de ce champ ne sera pas montré publiquement.
Syndiquer le contenu