Makina Blog

Le blog Makina-corpus

10 modules pour gérer le fil d'Ariane (breadcrumb) en Drupal


Dans tous les derniers projets Drupal auxquels j'ai participé, le fil d'Ariane s'est retrouvé à un moment ou à un autre dans les problèmes à régler.

Le problème

Contrairement au CMS Plone, qui comporte une hiérarchie (dans laquelle tous les contenus sont placés et qui sert au fil d'Ariane) mais permet de masquer certains contenus dans la navigation (l'équivalent du "menu" Drupal), Drupal n'a pas de hiérarchie : tous les contenus sont au même niveau. Seuls les menus introduisent une notion hiérarchique (virtuelle) entre les contenus.

Deux points notamment posent des problèmes :

  • Drupal ne se base que sur le menu principal ("main menu") pour déterminer le fil d'Ariane.
  • Il est rarement envisageable sur un site de positionner l'ensemble des contenus dans le menu, sous peine de surcharger celui-ci.

Nous allons voir dans cet article les différentes façons de traiter ces points, pour plusieurs profils d'utilisateurs Drupal.

Vous êtes un "site builder"

Il existe de très nombreux modules dédiés à la gestion du fil d'Ariane (prouvant si il était besoin que c'est un problème récurrent), nous allons traiter les principaux (et les plus maintenus), du plus simple au plus complexe.

Menu Breadcrumb

Ce petit module résout le premier de nos 2 problèmes en étendant la détermination du fil d'Ariane à tous les menus du site, augmentant la couverture "correcte" du fil d'Ariane standard de Drupal.

Je l'utilise finalement assez peu, dans la mesure où les menus additionnels que je créé (pied de page, par exemple), ne comportent souvent qu'un seul niveau et le fil d'Ariane est alors réduit à sa plus simple expression (Accueil >> contenu), géré nativement par Drupal. Il est cependant très utilisé.

Menu Position

Ce module très utile résout le deuxième problème en proposant de positionner virtuellement des contenus dans le menu automatiquement suivant leur type de contenu ou leur taxonomie (par exemple, placer toutes les actualités sous l'entrée de menu "Actualités"). Ces contenus n'apparaitront pas dans le menu, mais le fil d'Ariane sera basé sur cette position virtuelle. Pour les sites simples / moyennement simples, c'est la solution parfaite pour combler le manque de hiérarchie de Drupal, nous l'avons déjà souvent utilisé.

Hansel breadcrumbs

Fonctionne selon des règles créés dynamiquement par le webmaster (en mode SI-ALORS-SINON). Relativement puissant, pas toujours très facile à mettre en place. A essayer parce qu'il va un peu plus loin que Menu Position parfois.

Breadcrumbs by Path & Breadcrumb Manager & Easy Breadcrumb

Tous ces modules fonctionnent de la même façon, en cherchant à générer le fil d'Ariane complètement indépendamment du menu, en se basant sur vos URLs. Cette approche intéressante conditionne le site à n'avoir que des URLs "hackables", ce qui est très intéressant, mais peut être relativement contraignant (et surtout elle contraint l'architecture du site uniquement pour obtenir un fil d'Ariane utilisable). Je n'ai utilisé aucun de ces modules, des règles spécifiques m'ayant toujours obligé à utiliser plutôt les modules suivants.

Custom Breadcrumbs & Path Breadcrumbs

Ces deux modules permettent théoriquement de configurer le fil d'Ariane de n'importe quelle page, en fonction de son URL. Contrairement à tous les modules précédents, ils demandent plus de configuration dans la mesure où, si les traitements par lots sont possibles, on réserve souvent l'usage de ces modules à une configuration très fine du fil d'Ariane, page par page, pour les webmasters du site.

Crumbs

Autant le dire tout de suite, Crumbs est mon préféré. Pourquoi ? Parce qu'il permet de définir un ordre de règles permettant de générer le fil d'Ariane, reprenant, par exemple, le menu auquel appartient la page, ou l'URL (rendant ainsi les premiers modules de cette liste inutiles), mais également d'autres comme les termes de taxonomie du contenu, le forum, utiliser des champs du contenu, …). Bien configuré, vous pouvez être à peu près sûrs que Drupal trouvera une règle à utiliser pour générer le fil d'Ariane d'une façon cohérente.

Attention, cependant, l'interface de ce module n'est pas évidente à utiliser, donc à ne pas mettre entre les mains d'un utilisateur avec un profil débutant en Drupal.

Vous êtes un développeur

Note : les thémeurs sont pour cet article considérés comme des développeurs (contrairement à la distinction en vigueur dans la communauté Drupal), ils surchargeront simplement tout le fil d'Ariane dans la fonction theme_breadcrumb() pour obtenir le résultat souhaité.

Menu Position

Menu Position comporte une API, vous permettant d'ajouter des greffons et d'ajouter donc d'éventuelles règles manquantes.

Crumbs

Crumbs comporte également une API pour ajouter de nouvelles règles.

Pourquoi un module, je suis un codeur !

Si vous êtes un développeur, il n'y à priori aucune raison d'utiliser un module pour le fil d'Ariane (à part si le client doit agir dessus) : il y a, en gros, 2 niveaux pour intervenir : dans un module, ou dans la couche de thème (c'est moins propre, la couche de thème n'étant normalement là que pour éventuellement changer le séparateur du fil d'Ariane, et uniquement cela).

Pour intervenir dans un module, et modifier le fil d'Ariane, en s'inspirant du module Menu position, on voit qu'il est possible d'utiliser le hook_delivery_callback_alter() (dont le principal avantage est d'être appelé "au bon moment") et d'utiliser à l'intérieur la fonction menu_tree_set_path() (pour indiquer un parent pour certaines de vos pages). Il est également possible d'utiliser directement le hook_menu_breadcrumb_alter() pour réaliser des opérations.

Vous pouvez consulter toute une explication ainsi que des bouts de code sur ce lien.

Comment choisir entre tous ces modules ?

Le choix dépend surtout de 2 choses : le besoin (pour certains, les fils d'Ariane standards de Drupal suffiront, inutile de charger le site pour rien), et le profil du webmaster du site (pour des utilisateurs qui comprennent ce qu'ils font avec fil d'Ariane, et maitrisent l'interface, leur proposer Custom Breadcrumbs ou un équivalent n'est pas un problème). Chaque besoin peut être couvert par une réponse adéquate.

Ma stratégie est à peu près : rien si aucune demande n'est faite, Crumbs dans la plupart des cas, Custom Breadcrumbs ou Path Breadcrumbs si le client doit pouvoir personnaliser le fil d'Ariane lui-même sur certaines pages.

En Bonus

Un dernier point qui pose problème est que beaucoup de "starter themes" (Zen, Omega, Bootstrap, …) font plus que modifier le séparateur du thème et agissent par exemple sur l'affichage en sus du titre de la page (avec ou sans lien). Par exemple, la configuration du thème Bootstrap par défaut rentre en conflit avec la plupart des modules (Custom Breadcrumbs, Crumbs, …), heureusement, le thème indique dans ses réglages ce qu'il faut indiquer en cas de conflit avec un module s'occupant déjà du fil d'Ariane.

Et Drupal 8, dans tout ça ?

Drupal 8 change deux choses au niveau du fil d'Ariane :

  • Le fil d'Ariane est désormais un bloc plaçable où vous le souhaitez dans l'interface ;
  • Le fil d'Ariane est désormais un service, par défaut la classe BreadcrumbManager qui transmettra la construction du fil d'Ariane a des builders, que vous pourrez implémenter dans l'un de vos modules. Le cœur en contient quelques uns qui pourront vous servir d'inspiration.

Voilà, vous n'avez plus d'excuse pour ne pas savoir gérer vos fils d'Ariane dans Drupal.

Actualités en lien

Image
Migration Drupal 7 à Drupal 10
04/04/2024

Migration d'un site Drupal 7 en Drupal 10

Trucs, astuces et "bouts" de code pour migrer votre site web de Drupal 7 à Drupal 10. Compte-rendu d'une conférence donnée au Drupalcamp Rennes 2024.

Voir l'article
Image
Formation Migration Drupal 10
03/04/2024

Du nouveau dans notre gamme de forma­tions Drupal

Maîtri­sez le CMS Drupal de bout en bout avec notre panel complet de forma­tions couvrant la migra­tion (notre petite dernière), l’ad­mi­nis­tra­tion, le déve­lop­pe­ment et l’in­té­gra­tion Drupal. Pour deve­nir expert, plon­gez dans l’uni­vers Drupal !

Voir l'article
Image
Encart article DrupalCamp 2024
06/03/2024

Makina Corpus, parte­naire du Drupal­Camp 2024

Nous sommes fiers d’an­non­cer que Makina Corpus est le spon­sor du Drupal­Camp à Rennes. Notre expert vous y propose une confé­rence « migrer de Drupal 7 à Drupal 10 ».

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus