[Résolu] Mon module s'affiche, mais il se fiche de la région dans lequel je le met !

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,

j'ai créer un module sous forme de bloc pour mon menu, je souhaite l'afficher dans la région "header_bas" que j'ai bien créer dans le .info de mon thème. Cette région apparait bien dans les choix possible d'affiliation des blocs.
Dans l'administration des blocs, je glisse donc mon module dans cette région mais il me l'affiche toujours en haut de ma page ! et même dans les page ne contenant pas le code suivant:

<?php
 
if ($header_bas):
              print
$header_bas
            
endif;   
?>

ça vient probablement du fait que dans mon module j'ai inscrit:

<?php
 
function menuperso_block($op = 'list', $delta = 0, $region = 'header_bas', $edit = array())
{
 
   if(
$op == 'list')
    {
     
$block[0]['info'] = t('Menu Perso');   
       return
$block;
 }
  elseif(
$op == 'view')
    {  
      
$block['subject'] = 'menu';
       
$block['region'] = 'header_bas';
      
$block['content'] = menuperso_generate_menu();   
      
       return
$block;
 }
}
?>

A partir du moment où le bloc est afficher ('view'), alors quoi qu'il arrive, il exécute la fonction menuperso_generate_menu();, savez-vous comment je peux contourner ce problème pour qu'il s'affiche dans la bonne région et uniquement quant elle est printé!?! Merci d'avance pour votre aide !

Pour être précis tu as créé un module qui fournit un bloc ;-)

1/ Quant tu vas dans la configuration des blocs, vois-tu bien un label "header_bas" ajouté par drupal dans ta région, si ce n'est pas le cas, c'est que ta région n'est pas reconnue par le moteur de thème. Soit une erreur de syntaxe, soit simplement un problème de vidange du registre de thème (installe le module admin_menu, menu déroulant de l'icone en haut à gauche, Flush all Cashes/Theme registry).

2/ As-tu bien (oui je sais, question idiote) ajouté ce bloc dans la région header_bas, la ligne 'Menu Perso' est elle visible sous la région ?

3/ Quelle est la tête de ta fonction menuperso_generate_menu() ? Renvoie t-elle un tableau de type array('content'=>'contenu du bloc') ?

4/ Utilises plutôt un identifiant clair pour ton bloc ($block['mon_bloc_menu'] plutôt que $block[0]) car quant tu auras 253 blocs fournis par ton module, ce sera bien plus pratique ;-)

PS: tu aurais du mettre cette question en section développement

1/ Oui la région est bien créer et elle est bien reconnue !

2/ J'ai ajouter ajouter le bloc (fournit par le module) à la région header_bas mais il est visible partout dans toute les page et pas seulement quand je 'print' la région "header_bas". c'est d'ailleurs mon problème.

3/ Dans ma fonction menuperso_generate_menu(); il y à juste un print qui affiche des liens pour le moment...

4/ bonne idée

ps: ok, j'y penserais pour la prochaine fois.

Merci d'avoir pris le temps de me lire, je continu de chercher.

ok en fait j'ai trouver mon soucis:
je fais pas mal de test en ce moment et j'avais caler juste un print '...'; dans ma fonction donc il me l'affichait tout en haut sans se préoccuper de la région dans lequel je mettait mon bloc. j'ai changer le print en mettant à la place un $content = '...'; return $content; ce qui est bien mieu ! A présent celà fonctionne bien.
désolé pour le dérangement, j'aurais du réfléchir avant de poster ici!
Merci quand même, la communauté drupal est toujours prête à aider, c'est génial :)