Visibilité d'un bloc selon les URLs?

Catégories:

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 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

<?php
if (arg(0) == 'quotes') $match = TRUE;
?>

dans cette fonction.

#

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.

Vincent

Formations Drupal pour WEBMASTERS, DESIGNERS et DÉVELOPPEURS.

#

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 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).

Vincent

Formations Drupal pour WEBMASTERS, DESIGNERS et DÉVELOPPEURS.

#

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 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 :)

Syndiquer le contenu