We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 21471
    • 42 Posts
    Bonjour,

    Je migre un site de SPIP > Modx et j’ai un petit souci avec un menu :

    Résultat escompté :

    <div id="menu">
        <dl class="first">
            <dt onmouseover="javascript:montre('');"><a href="http://www.fundpicking.com" title="Retour à l'accueil">Accueil</a></dt>
        </dl>
        <dl>			
    		<dt onmouseover="javascript:montre('smenu-1');">Présentation</dt>
            <dd id="smenu-1">
                <ul>        
                        <li><a href="Les-decideurs">Les décideurs</a></li>
                        <li><a href="Nos-partenaires">Nos partenaires</a></li>
                        <li><a href="Nos-points-forts">Nos points forts</a></li>
                        <li><a href="Notre-philosophie">Notre philosophie</a></li>
                </ul>
            </dd>
        </dl>
        <dl>			
    		<dt onmouseover="javascript:montre('smenu-2');">Services</dt>
            <dd id="smenu-2">
                <ul>        
                        <li><a href="Processus-d-investissement">Processus d’investissement</a></li>
                        <li><a href="Les-mandats-de-gestion">Les mandats de gestion</a></li>
                        <li><a href="Produits-structures">Produits structurés</a></li>
                        <li><a href="Third-Party-Marketer">Third Party Marketer</a></li>
                </ul>
            </dd>
        </dl>
        <dl>			
    	<dt onmouseover="javascript:montre('smenu-3');">Contact</dt>
            <dd id="smenu-3">
                <ul>        
                        <li><a href="Contacts">Contact</a></li>
                        <li><a href="News">News</a></li>
                </ul>
            </dd>
        </dl>
        <dl class="last">
            <dt class="last" onmouseover="javascript:montre('');"> </dt>
    	</dl>
    </div>
    


    Résultat actuel :

    <div id="menu">
        <dl class="first">
            <dt onmouseover="javascript:montre('');"><a href="http://localhost/modx-0.9.6.3/" title="Retour à l'accueil">Accueil</a></dt>
        </dl>
        <dl>			
    		<dt onmouseover="javascript:montre('smenu-2');">Présentation</dt>
    		<dd id="smenu-">
    			<ul>
    				<li><a href="/modx-0.9.6.3/les-decideurs">Les décideurs</a>Les décideurs</li>
    			    <li><a href="/modx-0.9.6.3/nos-partenaires">Nos partenaires</a>Nos partenaires</li>
    				<li><a href="/modx-0.9.6.3/nos-points-forts">Nos points forts</a>Nos points forts</li>
    				<li><a href="/modx-0.9.6.3/notre-philosophie">Notre philosophie</a>Notre philosophie</li>
    			</ul>
    		</dd>	
    	</dl>
    	<dl>			
    		<dt onmouseover="javascript:montre('smenu-3');">Services</dt>
    		<dd id="smenu-">
    			<ul>
    				<li><a href="/modx-0.9.6.3/processus-dinvestissement">Processus d’investissement</a>Processus d’investissement</li>
    				<li><a href="/modx-0.9.6.3/les-mandats-de-gestion">Les mandats de gestion</a>Les mandats de gestion</li>
    				<li><a href="/modx-0.9.6.3/produits-structures">Produits structurés</a>Produits structurés</li>
    				<li><a href="/modx-0.9.6.3/third-party-marketer">Third Party Marketer</a>Third Party Marketer</li>
    			</ul>
    		</dd>
    	</dl>
    	<dl>
    		<dt onmouseover="javascript:montre('smenu-16');"><a href="/modx-0.9.6.3/news">News</a></dt>
    	</dl>
    	<dl>
    		<dt onmouseover="javascript:montre('smenu-14');"><a href="/modx-0.9.6.3/contact">Contact</a></dt>
    	</dl>
    </div>
    


    Ce qui me pose problème est que je n’ai plus d’id pour les lignes de type :
    <dd id="smenu-">


    Mon menu est généré via Wayfinder de la façon suivante :

    <div id="menu">
        <dl class="first">
            <dt onmouseover="javascript:montre('');"><a href="[(site_url)]" title="Retour à l'accueil">Accueil</a></dt>
        </dl>
        [[Wayfinder? &startId=`0` &parentRowTpl=`MenuParentRow` &outerTpl=`MenuOuter` &innerTpl=`MenuInner` &innerRowTpl=`MenuInnerRow` &rowTpl=`MenuRow` &excludeDocs=`1,13,15`]]
    </div>
    


    Avec MenuParentRow :

    <dl>			
        <dt onmouseover="javascript:montre('smenu-[+wf.docid+]');">[+wf.linktext+]</dt>
        [+wf.wrapper+]
    </dl>
    


    Avec MenuOuter :

    [+wf.wrapper+]
    


    Avec MenuInner :

    <dd id="smenu-[+wf.id+]">
        <ul>
        [+wf.wrapper+]
        </ul>
    </dd>
    


    Utiliser [+wf.docid+] ne donne rien non plus.

    Avec MenuInnerRow :

        <li><a href="[+wf.link+]">[+wf.title+]</a></li>
    


    et MenuRow :

    <dl>
        <dt onmouseover="javascript:montre('smenu-[+wf.docid+]');"><a href="[+wf.link+]">[+wf.linktext+]</a></dt>
    </dl>
    


    J’ai besoin de cet id pour la gestion de mon menu déroulant en js pour gérer l’affichage ou pas des sous-menus :

    window.onload=montre;
    function montre(id) {
    var d = document.getElementById(id);
    	for (var i = 1; i<=20; i++) {
    		if (document.getElementById('smenu-'+i)) {document.getElementById('smenu-'+i).style.display='none';}
    	}
    if (d) {d.style.display='block';}
    }
    


    Il est normal que News et Contact soit maintenant séparé au fait smiley

    J’avoue que je sèche un peu et que mon appréhension de wayfinder laisse encore à désirer  wink
      • 6726
      • 7,075 Posts
      A vérifier mais il me semble que pour que ça marche il faut utiliser &rowIdPrefix pour que le placeholder [+wf.id+] soit défini, et il faudrait l’utiliser de la manière suivante dans MenuInner

      <dd [+wf.id+]>
          <ul>
          [+wf.wrapper+]
          </ul>
      </dd>


      avec [tt]&rowIdPrefix=`smenu-`[/tt] dans l’appel de Wayfinder  (à vérifier si le tiret - ne pose pas de problème).

      C’est une solution de contournement parcequ’alors wf.id aura la valeur de l’id du document, Wayfinder n’assigne pas d’id aux ul de sous niveau contrairement au premier niveau (à voir s’il n’existe pas une modif pour faire ça, ça me rappelle quelque chose mais jamais eu besoin de l’utiliser avec CSS + cascade en général ça suffit)
        .: COO - Commerce Guys - Community Driven Innovation :.


        MODx est l&#39;outil id
        • 21471
        • 42 Posts
        Déjà, merci pour la réponse et bonne année smiley

        Par contre, ça ne marche pas, cela m’affiche juste un <dd > en essayant &rowIdPrefix=`smenu-` ou&rowIdPrefix=`smenu`

        Je sens que je vais devoir voir comment reprendre mon menu différemment moi smiley
          • 6726
          • 7,075 Posts
          Bonne année à toi aussi !

          Autant pour moi effectivement en vérifiant sur un des sites où je l’ai utilisé je me suis rendu compte que j’ai dit une bêtise, rowIdPrefix ne fonctionne qu’avec les template "row" donc pour les élément li et non ul qui est dans le template défini via &innerTpl !

          La solution est en fait d’utiliser &parentRowTpl au lieu de InnerTpl pour construire le sous menu :

          Dans parentRowTpl :

          <li[+wf.classes+]>
          	<a href="[+wf.link+]" title="[+wf.title+]">[+wf.linktext+]"</a>
          	<ul id="level[+wf.docid+]">
                        [+wf.wrapper+]
                  </ul>
          </li>


          Et dans innerTpl :

          [+wf.wrapper+]


          Merci à devcw qui a donné la solution ici.

            .: COO - Commerce Guys - Community Driven Innovation :.


            MODx est l&#39;outil id
            • 21471
            • 42 Posts
            Yes, ça marche smiley

            Pas toujours évident la logique des contenants/conteneurs avec Wayfinder et les interactions possibles (ou pas) wink
              • 6726
              • 7,075 Posts
              Oui c’est comme tout, ça vient avec le temps (et même quand on a pratiqué, on peut perdre tongue)... ceci dit Wayfinder est très customisable, bien plus que la majeure partie des systèmes de menu que je connais...
                .: COO - Commerce Guys - Community Driven Innovation :.


                MODx est l&#39;outil id
                • 21471
                • 42 Posts
                Certes mais en même temps, pour un usage simple comme fournir la liste des enfants de la rubrique courante sans préciser un entier à startId, j’ai pas trouvé... (un truc à la startId=`[+wf.id+]`) dans l’esprit (Le pendant de <BOUCLE_rub(RUBRIQUES){id_rubrique}>...</BOUCLE_rub> quoi wink ). Je doute que ce cas ne soit pas géré par Wayfinder vu ce qu’il est capable de gérer mais j’arrive pas à trouver la bonne syntaxe malgré la lecture de la doc... sad
                  • 6726
                  • 7,075 Posts
                  Si tu ne spécifie pas startID ton appel de Wayfinder affectera par défaut l’ID du document en cours (comme si tu faisais &startId=`[*id*]`), tu peux aussi faire &startId=`[*parent*]` et aussi plus complexe utiliser un appel de snippet comme paramètres (UltimateParent qui donne plus de contrôle que [*parent*] mais on peut aussi faire des choses avec GetField).
                    .: COO - Commerce Guys - Community Driven Innovation :.


                    MODx est l&#39;outil id
                    • 21471
                    • 42 Posts
                    Ah ok, merci ! J’avais cru comprendre en lisant la doc que ce paramètre était obligatoire donc j’ai pas cherché sans... au tant pour moi et me voilà rassuré smiley