Blog

David Petit, Conception de sites internet

Snippet PHP pour afficher un bloc en fonction de la taxonomy

Bonjour ! Je vais partager avec un vous un snippet PHP très utile pour afficher des blocs en fonction de la taxonomy d'une page !

Qu'est-ce qu'un snippet ?

C'est un petit bout de code ou de script que l'on insère dans une zone et qui pourra être utilisé par un programme (ici par Drupal). Le but sera de réaliser une tâche, un calcul, etc. Les possibilités sont très larges.

Dans quelle situation aura-t-on besoin de ce snippet ?

Imaginons que vous avez un bloc (un menu, une image, un texte, une view, etc.) mais que vous voulez qu'il apparaissent seulement sur les pages avec un terme de taxonomy bien précis.

Par exemple, considérons le terme de taxonomy "rouge" qui fait partie d'un vocabulaire "couleur". Je veux que mon bloc apparaisse uniquement sur les pages dont la taxonomy a pour valeur "rouge". Le snippet que je vais vous montrer servira à faire ce genre de choses !  :)

Où insérer ce snippet ?

Il vous faut aller dans la configuration de votre bloc: Construction du site -> Blocs. Vous choisissez le bloc qui vous intéresse et cliquez sur configurer.

Dans la partie "paramètres de visibilité spécifiques à la page", cochez la case "fficher si le code PHP suivant retourne TRUE (mode PHP, experts seulement)". Ensuite, vous pouvez coller votre snippet PHP dans la zone de texte juste en-dessous.

Le snippet:

<?php
if (arg(0) == 'node' && is_numeric(arg(1))) {
  $nid = arg(1);
  $node = node_load($nid);
  foreach ($node->taxonomy as $term) {
    if ($term->name == 'rouge') {
      return TRUE;
    }
  }
}
return FALSE;
?>

Que fait ce snippet ?

C'est simple, il va récupérer le terme de taxonomy de la page courante. Il va vérifier si il a la valeur "rouge" et retourner la valeur TRUE si c'est bien le cas. Ainsi, toutes les pages qui auront comme taxonomy "rouge" afficheront ce bloc !
 
En espérant que ça pourra servir, je vous dis à bientôt !
Catégorie :