Construire un fil d’ariane personnalisé

Construire un fil d’ariane personnalisé

13 Oct 2010 |  Drupal

Avoir un breadcrumb ou fil d’Ariane sur son site aujourd’hui c’est commun, mais cela aide quand même à se retrouver, à comprendre comment on est arrivé ici et offre la possibilité de revenir en arrière. Sous Drupal, vous avez déjà été confronté à la personnalisation de cet outil de navigation. Comme vous et moi, vous avez sûrement essayé tous les modules qui traitent du sujet, du genre Custom Breadcrumbs ou encore Taxonomy Breadcrumbs.

Bref, la plupart du temps vous avez trouvé et configuré votre bonheur en quelques clics. Mais il arrive parfois que votre besoin soit un peu plus exotique que prévu, et comme bien souvent, la meilleure façon d’avoir ce que l’on veut c’est de le faire soit même et de mettre les mains dans le cambouis.

Pour la construction du fil d’Ariane il n’y a qu’une seule fonction à retenir : drupal_set_breadcrumb($breadcrumb = NULL)

Cette fonction est vraiment simple à utiliser puisqu’il vous suffit de lui passer un tableau de liens et c’est tout.

$breadcrumb = array(
  l(t('Champignons'), 'champignons'),
  l(t('Amanite'), 'champignons/amanite'),
  l(t('Tue-mouche'), 'champignons/tue-mouche'),
);
drupal_set_breadcrumb($breadcrumb);

Et comme résultat, on obtient un fil d’Ariane de champignons (après trois heures à chercher désespérément des pieds de moutons dans les bois c’est le seul exemple qui me vienne à l’esprit) :

C’est bien gentil tout ça me direz-vous, mais on le place où cet appel à la fonction de création du breadcrumb ? Et bien lors d’un nodeapi ‘view’ ou encore dans une fonction perso de génération de contenu. L’important est de le faire avant les opérations de preprocess et de theming. Quelle que soit la méthode utilisée, votre tableau de lien va être sauvegardé et récupéré lors de l’affichage afin d’être thémé par la fonction de theme theme_breadcrumb($breadcrumb)

Nota bene : * N’oubliez pas de mettre un lien vers l’accueil de votre site. * Un fil d’Ariane ne contient pas la page en cours, mais le chemin pour arriver jusqu’à celle-ci.

/**
 * Implementation of hook_nodeapi().
 */
function sandbox_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
  if ($node->type == "fiche_aliment" && $a4 == TRUE) {
    switch ($op) {
      case 'view' :
        $breadcrumb = sandbox_custom_breadcrumb();
        if($breadcrumb){
          drupal_set_breadcrumb($breadcrumb);
        }
        break;
    }
  }
}

function sandbox_custom_breadcrumb(){
  $ret = array(
    l(t('Home'), NULL),
    l(t('Example'), 'example'),
    l($node->field1, 'example/' . $node->field1),
  );
  return $ret;
}
Julien Dubreuil

Vous avez une idée, un projet web à réaliser ?

Ensemble, mettons en oeuvre sa réussite. Je vous accompagne dans vos projets, depuis l'élaboration du cahier des charges jusqu'à la mise en production. Pour plus d'information n'hésitez pas à me contacter.

Contactez-moi