Edit: résolu mais nouvelle question plus bas dans le topic
je re-edit le sujet une fois tous les problèmes résolus.



Bonjour à tous,

j'aurais voulu savoir comment forcer l'ouverture d'un sous menu avec open_at_load (ou une autre solution) lorsque mon menu est en include dans la page.

Le site avec le menu dans le bandeau a droite :
http://www.romain-bezy.fr/ua/recits_08-09.php

merci
Modifié par Tek (25 Jan 2009 - 19:32)
Bonjour,

Tu dois trouver un moyen, en PHP, de savoir où placer la classe open_at_load, et de le faire dynamiquement. Par exemple, si chaque page ou rubrique est un script PHP séparé, tu peux y définir une variable PHP comme ceci:
$rubrique = 'nomderubrique';

Et, dans le code PHP de ton menu, tester pour chaque rubrique (LI de premier niveau à priori) si la variable $rubrique correspond au bon mot-clé, et si c'est le cas faire un echo du code HTML pour l'attribut class.

Bien sûr, pour comprendre ce que j'explique ci-dessus il faut un minimum de connaissances (de base) en PHP. Smiley cligne
Euh je suis un peu perdu la ! En fait je veux juste que lorsqu'on arrive sur la page récits 08-09 le menu "domicile" soit déroulé.

Il faut que je tente de mettre du php sur mon fichier menu.php ou sur ma page recits_08-09.php ??

Pour informations les liens de ce menu ne renvoient pas sur une page mais ils modifient le contenu de la div qui contient le contenu par l'intermédiaire d'une balise <span> autour des balises <li>. Est ce qu'il n'y aurait pas une soluce sur le javascript au chargement de la page ?

    jQuery(document).ready( function () {
        // On cache les sous-menus
        // sauf celui qui porte la classe "open_at_load" :
        jQuery("ul.subMenu:not('.open_at_load')").hide();
        // On selectionne tous les items de liste portant la classe "toggleSubMenu"
    
        // et on remplace l'element span qu'ils contiennent par un lien :
        jQuery("li.toggleSubMenu span").each( function () {
            // On stocke le contenu du span :
            var TexteSpan = jQuery(this).text();
            jQuery(this).replaceWith('<a href="" title="Afficher le sous-menu">' + TexteSpan + '</a>') ;
        } ) ;


Merci
Modifié par Tek (25 Jan 2009 - 17:33)
Tek a écrit :
Il faut que je tente de mettre du php sur mon fichier menu.php ou sur ma page recits_08-09.php ??

Sur les deux. Mais si tu ne connais pas les structures conditionnelles (if then else...) en PHP, ça va être dur.

Tek a écrit :
Pour informations les liens de ce menu ne renvoient pas sur une page mais ils modifient le contenu de la div qui contient le contenu par l'intermédiaire d'une balise <span> autour des balises <li>.

Rien compris. Tu parles d'une navigation utilisant Ajax, ou rien à voir? Comment peut-on modifier le contenu d'un DIV «par l'intermédiaire d'une balise <span>»?

Tek a écrit :
Est ce qu'il n'y aurait pas une soluce sur le javascript au chargement de la page ?

Il peut y en avoir une, mais ce sera plus compliqué qu'en PHP. Ça demande une connaissance au moins moyenne de JavaScript (tandis que la solution PHP demande une connaissance basique).
Merci à toi de ta réponse.

En fait je met un span pour déclencher un événement au click. Lors du click sur un "lien" cela declenche un slide sur le contenu afin de rendre visible telle ou telle parti de ma div.

Sinon j'ai trouver une solution toute bete en js:

jQuery(document).ready( function () {
        // On ouvre le premier sous-menu
        jQuery("#dom").slideDown("slow", function () { jQuery(this).parent().addClass("open") } );


ou l'id "dom" est celui de la div que je souhaite ouvrir au chargement de la page !

Nouveau problème en revanche avec la mise en forme, un petit décalage intervient sur l'élément qui est fermé, il s'aligne avec les listes du menu déroulé. Je cherche depuis toute à l'heure mais je n'ai pas encore la solution si quelqu'un voit le problème...

http://www.romain-bezy.fr/ua/recits_08-09.php

http://www.romain-bezy.fr/ua/css/styles.css
http://www.romain-bezy.fr/ua/css/menu2.css