'>

Limiter la visibilité d'un bloc à un type de contenu particulier

On a parfois besoin dans Drupal de limiter la visibilité d'un bloc à un type de contenu particulier. Or, il n'est pas possible de faire cela en se basant sur les chemins internes dans les paramètres de configuration du bloc. Il reste donc deux solutions :
Utiliser du php pour gérer la visibilité :
Entrez le code ci-dessous dans les paramètres de visibilité (choisissez bien PHP pour le type de visibilité) et remplacez "story" par le type de contenu sur lequel vous souhaitez que votre bloc s'affiche
<?phpif(arg(0) == 'node' && is_numeric(arg(1))){
 
$node = node_load(arg(1));
  (
$node->type == 'story') ? $afficher = TRUE : $afficher = FALSE;
}
return
$afficher;?>
Utiliser le module context :
Le module context permet de définir comme son nom l'indique des "contextes" sur votre site. En l'occurence il est facile de créer un mini-contexte du style "sur tel type de contenu, je veux afficher ce bloc". Attention ! pour que contexte puisse placer les blocs lui même, ceux ci ne doivent pas être déjà placés par la page de gestion de blocs classiques de Drupal. Attention également si vous avez installé i18n : context s'entend très mal avec lui. Une partie des problèmes peut se résoudre en augmentant le poids du module context dans la table system mais la cohabitation reste difficile.
http://drupal.org/project/context
Malgré ces remarques, l'intérêt de context ne se limite pas à placer un bloc selon un type de contenu, il peut déclencher différentes réactions en fonction de différents éléments, un module à tester donc et qui fait un joli compagnon pour features.
Le fait de pouvoir voir tous les blocs présents dans un contexte particulier est également un plus pour l'utilisation de context. En effet, la page des blocs de drupal ne permet pas de par exemple réunir tous les blocs présent sur telle ou telle page, ou tous ceux présents sur tel ou tel type de contenu.