Comment rendre le menu princpal déroulant ?

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 à tous !

Cela fait un moment que je cherche comment faire en sorte que le menu principal soit déroulant.
J'ai un menu parent et des menus enfants. De base Drupal ne n'affiche apparemment pas les enfants (pourquoi ? si quelqu'un connait la réponse). Je me suis donc tourné vers le module nice-menu. Il fait ce que je veux mais pas où je veux. On peut placer nice-menu dans tous les bloc imaginable mais ce que je souhaite surtout c'est remplacer le menu principal. Et j'ai comme l'impression que le menu principal est "hardcodé".

Je n'arrive pas à mettre la main sur un tuto ou sujet de forum qui explique clairement comment faire un menu principal déroulant. Hors selon moi ça devrait être une fonction simple et basique car les menus déroulants sont présent sur un tier des sites si ce n'est pas plus.

Dans l'espoir d'avoir enfin une réponse, merci d'avance pour votre aide.

Syrius

Version de Drupal : 

Il faut vérifier dans quelle région se trouve ton menu principal.
En effet, il arrive parfois (selon le thème) que le menu principal ne soit pas placé dans la bonne région.
dans la section Bloc, essaye de changer la région. Par exemple, si tu as une région "Drop Down Menu", c'est dans celle-ci que doit se trouver ton menu.

Après je sais que j'ai entendu parlé d'un bug sous drupal 7 empéchant les sous-menu d'apparaitre mais je ne sais pas si c'est résolu ( ou si ya une astuce ou autre)

"Il faut vérifier dans quelle région se trouve ton menu principal."
=> aucune malheureusement et c'est bien la clé du problème !
J'utilise actuellement le thème Bartik (le problème étant le même sur 3 autres thèmes testés) et lorsque j'affiche par exemple l'aperçu des blocs, j'ai pratiquement tout : en-tête, contenu, barre latérale, etc mais pour le menu il y rien, il est là et puis c'est tout. Il ne fait pas partie d'un bloc.

J'ai eu le même problème que toi. J'avais installé DHTML Menu et en avait aussi essayé un autre.
J'ai lu sur d'autres fils diverses solutions, la meilleure étant d'installer le thème Bartik Plus qui permet les menus déroulants du menu principal.

Un fil en anglais traitant aussi du sujet.

Pour Bartik+, voir ici.

J'ai essayé le thème Bartik Plus et je ne vois pas de différence :(
Ensuite j'ai regardé le fil en anglais. Là j'ai réussi à faire en sorte que le menu principal se déroule mais le thème est complètement cassé. Le menu n'est plus horizontal mais vertical, il n'y a plus de fond et les sous-menu élargissent les blocs . . .

En remplaçant dans themes/bartik/templates/page.tpl.php la portion de code suivante :


<?php
 
print theme(&#039;links__system_main_menu&#039;, array(&#10;          &#039;links&#039; =&gt; $main_menu,&#10;          &#039;attributes&#039; =&gt; array(&#10;            &#039;id&#039; =&gt; &#039;main-menu-links&#039;,&#10;            &#039;class&#039; =&gt; array(&#039;links&#039;, &#039;clearfix&#039;),&#10;          ),&#10;            &#039;heading&#039; =&gt; array(&#10;            &#039;text&#039; =&gt; t(&#039;Main menu&#039;),&#10;            &#039;level&#039; =&gt; &#039;h2&#039;,&#10;            &#039;class&#039; =&gt; array(&#039;element-invisible&#039;),&#10;          ),&#10;        ));
?>

par celle-ci :

<?php
if ($main_menu) {
$pid = variable_get('menu_main_links_source', 'main-menu');
$tree = menu_tree($pid);
$tree = str_replace(' class="menu"', '', $tree);
$main_menu = drupal_render($tree);
}else{
$main_menu = FALSE;
}
?>

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

On obtient effectivement un menu principal enfin déroulant. Mais nouvelle question alors : Comment le remettre en forme ?

Voici l'URL du site en construction : http://cnc-sgu.fr/site/
Le menu temporaire est constitué de Accueil, Mod, Forum. Mod comporte les sous-menu Civilisations et Images. Le premier c'est le menu principal fixe, le second un module de nice-menu.

Mon seul souhait depuis le début est que le menu principal se comporte exactement comme le nice-menu mais en conservant son thème et son emplacement.

Je ne comprend vraiment pas pourquoi il faut passer par des modules, des injections de code et parcourir des kilomètres de sujets sur les forums pour obtenir un résultat aussi basique pour le web d'aujourd'hui !

Bien d'accord avec toi, certaines choses, apparemment simples, deviennent très compliquées avec Drupal.

Mon but avec Bartik+ était d'avoir le menu principal déroulant avec l'onglet n'envoyant pas vers une page. Mes onglets sont à et je vois tous les enfants dans le déroulement.
De plus, Nice Menus ne m'a servi à rien. Et j'ai mis le module DHTML Menu à None.

As-tu mis les menus "affichés dépliés" ?

Et sinon pourquoi ne pas changer de thème ?
Car après avoir testé, le thème Bartik ne permet pas de gérer un menu principal déroulant.
Il y a des thèmes avec lesquels cela fonctionne parfaitement.
Par exemple, tu as le thème "0 Point" que j'ai testé et qui fonctionne très bien.

Effectivement il y a une option Drop Down Menu dans les Blocs du thème 0 Point et ça marche !
J'avais testé 3 thèmes en plus de Bartik et comme ça ne changeait strictement rien j'avais fini par me dire que c'était pas une question de thème alors qu'apparemment si . . .

Hm, ça a marché!

suite à la mise à jour du drupal 7, j'ai eu plein de problèmes...

Pour le menu déroulant j'ai

  • inséré le script que vous proposiez ci haut, enregistré. ça m'a donné le menu en verticale, sans menu déroulant, et sans style!
  • ensuite j'ai copié collé le script de la page.tpl.php de la version drupal 6 et ça a marché...

Bonjour,

Pour info :

J'ai trouvé deux solutions pour Bartik, mais en anglais...

La première, qui ne requiert pas de modification de code, ici :
http://nybergbusinesssystems.com/blog/code/how-customize-and-style-drupa...

et la seconde (qui requiert une modification de code) là : http://coolestguyplanettech.com/downtown/replacing-main-menu-drupal-bart...

Pol

Moi j'ai galéré pendant 1h30, j'avais le thème tweme et vue le navbar n'est pas dans une région, je pensais que je devais obligatoire coder le truc en dure..

Cependant en débuggant le code dans le fichier includes/menu.inc de mon theme je me suis rendue compte que les conditions pour afficher mon menu en dropdown était : if ($link['has_children'] && $link['expanded']) Expanded n'était pas à 1.

Pourtant j'avais activer toutes mes liens dans mon menu, et je me suis aperçu qu'il fallait cocher la case "Show as expanded" juste en dessous de la case "Enabled" sur le parent pour que le menu déroule le menu enfant.
Normalement cette case sert à laisser toujours ouvert le menu déroulant mais apparemment pas dans ce thème on dirait, sans ça il n'apparait même pas dans l'HTML.

Si ça peut aider qlq ma perte de temps sera un peu récompensée.

Bon courage les gars.