Cacher / Montrer une région selon le type de contenu ?

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

Je voudrais cacher la région "colonne de droite" lorsque je suis dans le forum.
J'élargis ma question :
Comment faire pour cacher / montrer une ou des régions selon le contenu visité ?

une idée ?
merci

Forum : 
Version de Drupal : 

Bonjour,

Dans la partie block, tu as une partie qui regroupe tous les block de la colonne de droite.

Il suffit d'aller sur configurer de chacun de ces blocs et d'entrer les URLs où ces blocks doivent ou ne doivent pas s'afficher.

Cordialement,

Martin

Bonnjour,

Bien qu'avec beaucoup de retard, et pour laisser la bonne info sur ce sujet, la façon d'afficher en block en fonction du contenu se fait grâce à un snippet.

En effet, un snippet est un petit bout de code php qui retourne TRUE ou FALSE en ce qui concerne l'affichage ou non des blocks.

Donc quand tu es sur la configuration d'un block,
1/ il suffit d'aller sur : "Paramètres de visibilité spécifiques à la page",
2/ tu coches
"Afficher si le code PHP suivant retourne TRUE (mode PHP, experts seulement)."
3/ tu colles le snippet suivant qui permettra d'afficher le code sur les type story et page:

<?php
$match
= FALSE;
$types = array('story' => 1, 'page' => 1);
if (
arg(0) == 'node' && is_numeric(arg(1))) {
 
$nid = arg(1);
 
$node = node_load(array('nid' => $nid));
 
$type = $node->type;
  if (isset(
$types[$type])) {
   
$match = TRUE;
  }
}
return
$match;
?>

"Variations: This example would show the block on all 'story' and 'page' type nodes. Just change line 2 - the $types array - to indicate which node types you want your block to appear on. Use the format 'nodetype' => 1 for each type you need. And yes, the array can hold single type only."
source : http://drupal.org/node/64135

Et en Français ça devrait donner :
Cet example devrait montrer le bloc sur toutes les types de noeud appartenant à "histoire" ou "page" (les deux types de contenu présent sur Drupal). Il y a juste a changer la ligne 2 - le $types tableau - pour indiquer sur quel type de node le block doit apparaître. Il faut utiliser la forme "'nodetype' => 1" (sans les parenthèses, mais avec les guillemets !) et rajouter une vigule entre chaque type sauf à la fin (comme dans le code en fait ...) pour chaque type dont on a besoin. Et oui le tableau (array) peut contenir qu'un seul type de contenu.

Cordialement,

Martin