Submitted by Luneh on
Salut à tous,
Me revoilà avec mes petites questions ennuyeuses et pointues.
J'aimerais faire en sorte qu'un bloc de menu n'apparaisse que pour certaines pages et certains contenus. J'ai trouvé sur le site officiel Drupal anglophone un code de base qui fonctionne très bien et qui dit (adapté à mon site):
<?php
$match = FALSE;
$types = array('event' => 1, 'quotes' => 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) == '/quotes/home')
{ $match = TRUE;}
return $match;
?>
MAIS en plus de cela, j'ai besoin que la bloc s'affiche aussi sur toutes les pages qui suivent la règle quotes/* (ou * est un uid). Comment je peux coder ça?
Merci d'ores et déjà pour votre aide!
Caroline
Ca dépend. Est-ce que
Permalien Soumis par Damien Tournoud le 3 Mai, 2007 - 11:51
Ca dépend. Est-ce que l'adresse "quotes/*" est une vraie adresse (ie. n'est pas un alias d'url) ?
Si c'est le cas, il devrait être suffisant de rajouter
dans cette fonction.
damz a raison. Le code que
Permalien Soumis par drupalfrance le 3 Mai, 2007 - 13:51
damz a raison.
Le code que tu nous a cité affiche le bloc sur les pages contenant un node de type "event" ou de type "quotes". A ma connaissance, il n'existe pas de node de type "quotes" (à moins que tu l'aies codé toi-même). C'est donc probablement les URLs qui commencent par "quotes/*" que tu veux tester.
Note que tu peux récupérer toute l'URL via la variable $_GET['q'] (plutôt que $_SERVER[]) ou des parties de l'URL via la fonction arg(n), où n est l'index de la partie à récupérer.
Comme l'a souligné damz, il faut juste faire attention aux alias : si un jour, tu remplaces "quotes/258" par l'alias "citation-de-montesquieu", le code de damz ne fonctionnera plus.
Comme l'a souligné damz, il
Permalien Soumis par tostinni le 3 Mai, 2007 - 17:52
Comme l'a souligné damz, il faut juste faire attention aux alias : si un jour, tu remplaces "quotes/258" par l'alias "citation-de-montesquieu", le code de damz ne fonctionnera plus.
Nop...
C'est l'avantage d'utiliser
arg()
car quel que soit l'alias que tu mets, arg(0) vaudra "toujours quotes".;)
Ben je ne crois pas. Si tu
Permalien Soumis par drupalfrance le 4 Mai, 2007 - 10:12
Ben je ne crois pas.
Si tu jettes un oeil à http://api.drupal.org/api/5/function/arg, tu verras que la fonction arg() tire ses valeurs de la querystring $_GET['q'], soit ce qu'on voit dans la barre d'adresse de son navigateur (et pas le chemin interne dans Drupal).
Tostinni a raison. Le
Permalien Soumis par Damien Tournoud le 4 Mai, 2007 - 10:59
Tostinni a raison. Le contenu de la variable $_GET['q'] est modifié par le bootstrap au moment de l'expansion des alias d'url.
Merci pour vos réponses, le
Permalien Soumis par Luneh le 4 Mai, 2007 - 13:01
Merci pour vos réponses, le code de damz a effectivement très bien fonctionné.
Pour ce qui est du type de contenu "quotes", oui, c'est un contenu custom, j'ai donc besoin que le code affiche aussi sur les noeuds de ce type, d'où le fait d'avoir inclu aussi le type de contenu dans le code. Mais du coup tout à l'air de fonctionner désormais.
Merci :)