Catégories:
Bonjour,
j’ai un bloc que je voudrais n’afficher que sur un type de contenu et selon son sujet, ainsi j’ai mis ce code :
<?php
$page_lycee_ok = 1;
?>dans la page et
<?php
echo $page_lycee_ok == 1
?>dans la zone de gestion du block dans l’admin, mais cela ne marche pas, quelle doit etre la syntaxe ?
merci
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

Il faudrait déjà dire où tu as mis le premier code :-)
Ceci étant dit, et là c’est du PHP, pas trop du Drupal, je ne vois pas bien comment ta variable $page_lycee_ok pourrait être visible plus loin dans le traitement. Au mieux (ou au pire selon les points de vue ;-), il faudrait que tu utilises la directive «global».
Enfin, il me semble que c’est un «return <booléen>» et pas un «echo» qu’il faut utiliser pour la visibilité PHP d’un block.
Sinon une meilleur manière de faire est de partir du principe que si ton block ne s’affiche que pour un type de contenu donné, un contenu de ce type doit être affiché pour qu’il apparaisse. Ce qui signifie par conséquence que l’url courante doit pointer sur un contenu de ce type (ex. mon_type_de_contenu) pour que le bloc s’affiche.
Tu peux donc t’en sortir un peu plus proprement en mettant dans le contrôle de visibilité du bloc un :
<?phpif ($node==menu_get_object()) {
return $node->type=='mon_type_de_contenu';
}
return false;
?>
Yoran - arNuméral
Yoran
1039
merci yoran,
je m’en suis sortie avec le nom de la page et an cochant «uniquement visible sur page listée»
je garde sous le coude ton code car mon projet est loin d’être fini..
encore merci
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045
bien j’expériemente ton et le test via PHP mais j’ai un souci,j’ai mis cela dans la zone de visibilité du bloc :
<?phpif ($node==menu_get_object()) {
return $node->type=='page_lycee';
}
return false;
?>
mais ca ne marche pas…pourtant j’ai récupéré «Le nom interne de ce type de contenu»…
j’ai raté quoi ?
EDIT : en effet il fallait mettre
return true;au lieu de
return false;plus un lien très intéressant : http://drupal.org/node/60317
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045
autre question, comment puis je ajouter plusieurs critères distincts ?
ex : une page doit s’afficher sur un certain type de contenu, mais aussi sur les pages d’erreurs, et aussi le contact…
merci
EDIT : j’ai trouvé ce code mais je voudrais lui indiquer 2 sortes de type de contenu au lieu d’une actuellement,comment faire ?
<?php$match = FALSE;
$types = array('page_association' => 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;
}
}
if (
substr($_SERVER["REQUEST_URI"], 0, 10) == 'site/search/node/*'){ $match = TRUE;}
if (
substr($_SERVER["REQUEST_URI"], 0) == "contact"){ $match = TRUE;}
return
$match;?>
Drupal 6.xx - 2 sites chez OVH (pro) mutualisé, 6 chez AlwaysData (Pack10go)
/////////////
www.graphisme-libre.info
aiphes
1045