Visibilité d'un bloc selon les URLs?

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.

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

Version de Drupal : 

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

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