Bonjour,

En marge de mon problème actuel, comme j'ai du temps, j'aimerai optimiser pour mon site le menu accordéon fabriqué à partir des tutos d'Alsacretations. Je l'ai installé à plusieurs endroits, notamment sur cette page : Sommaire de mon site. Comme c'est important ici je précise que mon site est dynamique.

Je voudrais laisser un sous menu ouvert, mais pas toujours le même selon une condition, et le tuto semble dire que cela est possible :

a écrit :
Si votre site est statique, il suffit d'ajouter à la main une classe (par exemple "open_at_load") sur le sous-menu que vous voulez garder ouvert (en fonction de la page). Pour les sites dynamiques, il est aussi possible de générer cette classe, en fonction d'une variable $_GET['page'] ou autre.


L'idée serait d'utiliser la fonction $_GET['page'] dans un sous menu au moment où le visiteur clique sur une image ou un lien, que celui-ci soit ou non sur la même page, mais comment faire ? Je ne connais pas suffisamment le php et javascript...
Modifié par Olivier C (26 Jul 2011 - 21:26)
Je n'ai pas suivi le tuto, mais bon à première vue, je dirai que tu peux faire ça avec GET. Admettons que tu aies le HTML suivant :


<ul id="menu">
    <li id="item1"><a>Accueil</a></li>
    <li id="item2"><a>Forum</a></li>
    <li id="item3"><a>Emploi</a></li>
</ul>


tu pourrais ensuite faire un lien comme ceci :

-www.monsite.com/mapage.php?menu=item2

Après au choix, soit tu ajoutes la classe avec JS, par exemple avec JQuery ça donnerai :


$("#menu #<?php echo $_GET['menu']; ?>").addClass('open-at-load');


Comme le Php est "écrit" avant d'envoyer la page, $_GET['menu'] va être remplacé par la valeur qu'il faut et le script va donc accéder à l'élément dont l'id est passée dans l'url et lui ajouter la class open-at-load.

Sinon tu peux faire une série de ifs :


<ul id="menu">
    <li id="item1" <?php if("item1" == $_GET['menu']) { echo 'class="open-at-load"'; } ?>>
        <a>Accueil</a>
    </li>
    <li id="item2" <?php if("item2" == $_GET['menu']) { echo 'class="open-at-load"'; } ?>>
        <a>Forum</a>
    </li>
    <li id="item3" <?php if("item3" == $_GET['menu']) { echo 'class="open-at-load"'; } ?>>
        <a>Emploi</a>
    </li>
</ul>


Comme ça ça se fera même si JS n'est pas activé... à toi de voir le choix que tu préfères...

J'ai pas testé ces bouts de code et ton markup est probablement différent mais ça devrait bien t'aiguiller sur la marche à suivre...

Ensuite en fonction de tes urls par exemple, tu pourrais utiliser l'url + un regex pour récupérer l'id du li si c'est possible, ou bien définir une variable manuellement dans le fichier php de ta page si chaque page du site a son propre fichier html...

Bref là c'est juste la méthode avec GET, sûrement la plus simple, mais il y en a d'autres Smiley lol
Vraiment merci pour ces informations HammHetfield, ce sont les infos qui me manquaient, je vais creuser dans cette direction.

Bien à vous
Salut Olive C,

Moi aussi j'ai suivi le même tuto que toi pour faire un menu accordéon, et je voudrai aussi comme toi garder un sous-menu ouvert lorsque je clique dans un des liens proposés.

Si tu as trouvé la solution, pourrai-tu m’éclaircir le chemin ? Smiley biggrin

Merci bien !
@ manchester_010 : désolé j'étais en vacances...

Un ami m'a effectivement donné la solution à partir d'un autre site sur lequel j'avais aussi intégré cet accordéon. Je ne l'ai pas encore adapté : c'est en PHP. Le jour où je l'adapte pour mon site je posterais la soluce ici.