sous menus issus de php + option de menu déroulant avec JQuery

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 la communauté,
récemment pour un besoin précis j'ai eu à créer mon propre module. Oh rien d'extraordinaire un module de menu simple mais dont les sous menu proviennent de ma base de donnée.
POur l'instant, lorsque je clique sur mes éléments de menu, qui sont en fait des onglets, j'ai bien la liste adéquate de ce que je veux.
Par contre, je ne veux pas que l'utilisateur soit obligé de cliquer pour accéder aux sous menus, je veux qu'au passage de la souris, bah que le sous menu s'affiche bien selon l'onglet actif et pas directement dans la page de contenu comme c'est le cas.
Je sais que c'est possible de le faire avec JQuery, mais le fait que mes onglets soient enrobés dans le système drupalien ne me permet d'aller à l'essentiel et oui, j'ai un peu de mal avec js et Jquery.
Si vous avez déjà été confronté à ce type de problème, je lirai vos propositions avec beaucoup d'intérêts.

Mici d'avance

[Résolu]

j'ai réussi à faire ce que je voulais sans passer par un module ou par views.

Forum : 
Version de Drupal : 

Rebonjour,
en attendant une âme charitable, voici mon code jquery

Drupal.behaviors.showSubMenu = function (context) {
$("div.menu_perso").hide();
$('#tabs-wrapper li a').each(function(){
$('#tabs-wrapper li a').mouseover(
function(){
$("div.menu_perso").slideDown("fast");
}).mouseout(function (){
$("div.menu_perso").hide();//$("div.clear-block").hide();
});
});
}

Le problème avec ce dernier c'est qu'il m'affiche un seul soous menu pour tous les onglets alors qu'il ne devrait pas.
Si vous avez des suggestions. Je continue à digger de mon côté ^^

Euh, toujours personne!!!
cool, je vous fait parvenir le code de mon module comme ça, je fais d'une pierre deux coups,il n'est que 14h j'y crois, quelqu'un me lira et répondra ^^
le js est en haut miciiii

Tu ne t'y prends (je pense) pas de la bonne manière. Déjà il y a mélange entre "menu drupal", des choses statiques qui ne changent QUE lorsque le module est activé (ou si tu vides le cache) et des liens HTML.

Là tu te compliques la vie avec quelque chose qui n'est pas fait pour cela. Fait un seul menu, et génère dans la callback ta grappe de liens/sous-liens. Tu maîtriseras ainsi le format et pourra utiliser jQuery tranquilement.

Bonsoir Yoran,
merci de passer faire un tour, franchement.
Pour ce qui est des menus, tu me dis:
"Fait un seul menu, et génère dans la callback ta grappe de liens/sous-liens"
j'ai réalisé un truc comme ça, enfin je crois.
Le module que j'ai créé me permet d'afficher mes items en onglets ce que je veux.
puis au clic,j'ai bien mes "sous-menus" ce qui n'est pas forcément ce que je veux car, au lieu du clic, je veux que ce soit au mouseOver.Mais bon passons.
Le gros souci je crois c'est que les éléments qui constituent mon sous menu
s'affichent directement dans le corps de ma page (1) au clic(2).
Tu comprends le souci?
Je n'ai pas pu comprendre comment toi par exemple sur ton site, tes sous menus apparaissent au mouseOver(ce que je veux) dans un espace qui ne gêne nullement le lecteur(l'autre chose que je veux).

merci de passer faire un tour, franchement.
Niark, je suis encore un peu en vacance ceci dit ;-)

Tu comprends le souci?
Je crois oui, en fait tu as généré le code de ton menu dans une callback et tu renvoies cela à Drupal. Du coup il te le colle dans la région "contenu" de ton thème.

Moi ce que j'ai fait, c'est simplement un enrichissement de variable de modèle que j'ai ajouté dans mon template.php. Du coup j'utilise la variable $mon_menu dans mon page.tpl.php. Cela peut convenir aussi à ton besoin car les variables sont regénérées à chaque construction de page, du coup tes menus peuvent être dynamique.

"Niark, je suis encore un peu en vacance ceci dit ;-)"

oh ce n'est pas grave, j'ai trouvé une solution provisoire, pas forcément la meilleure mais ça marche et ça reste de l'ordre du provisoire.
Ceci dit, je me doutais bien qu'il y avait un truc comme ça à faire.
Mais avant que tu ne redisparaisses, "$mon_menu", c'est le nom de mon module ou du nom que j'ai donné à mon menu lors de sa création?
posée comme ça la question me paraît évidente, mais bon.
Je vais reprendre en main le module avec ta solution.
Mais au fait, comment j'intègre le JQuery dans mon module?
tu vois l'effet fade in /out?

Merci pour ton coup de main aussi tardif soit il, pour moi, le but c'est d'apprendre à bien faire,parce que faire tout simplement je sais :).
Donc, chaque solution et idée pour m'améliorer me va :)