We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 10957
    • 32 Posts
    Bonjour,
    j’ai un arbre ModX : A (parents) > B,C,D (enfants)
    et je souhaite créer un menu A > A,B,C,D
    Je ne parviens pas à voir comment le faire (il me semble que je doive modifier le template InnerTpl mais je n’ai pas accès dans ce template aux placeholders [+wf.linktext+], etc. du parent.

    Pour être plus précis, je souhaite afficher deux titres différents pour le parent, suivant le niveau :

    A (menu_title) > A (mytv_sub_menu_title), B, C, D

    exemple : "Qui sommes-nous" > "L’entreprise", "Coordonnées", "Formulaire de contact"
    "Qui-sommes-nous" et "L’entreprise" étant deux titre de menu correspondant à la même page.

    Avez-vous déjà été confronté à ce besoin ? Voyez-vous une solution ?
      • 2299
      • 62 Posts
      Une solution-bidouille : ajouter un lien A’ en enfant de A qui s’appelle "L’entreprise" et qui pointe vers A.

      J’avais mis ça en place sur mon site, mais je me suis rendu compte que c’était confus (l’idée même, pas la solution trouvée) pour l’utilisateur. J’ai donc résolu le problème autrement, en ne faisant pas d’un document son propre enfant.
        • 10957
        • 32 Posts
        Merci pour ta réponse.
        J’ai pensé à ta solution qui est à peu près celle que j’ai en place en ce moment : je crée un enfant "L’entreprise" dans lequel je mets le contenu et j’appelle le snippet [[FirstChildRedirect]] dans le parent.
        Ca ne me convient qu’à moitié : je crée plus de pages (le parent et l’enfant),et la transformation d’un document en répertoire implique plus de modifs (dont son url puisque le contenu va se retrouver sur le 1er enfant et non plus sur le document lui-même). De plus les liens dans mon site sont soit sur le parent soit sur le premier enfant, et je ne sais pas trop dans quel mesure les moteurs de recherche apprécient (idem pour la redirection).
        Quant au principe de base, je me suis posé la question. Il me semble cependant que ça peut être utile pour l’utilisateur d’avoir le lien vers le parent (qui fonctionne comme la première partie de la catégorie) avec un nom approprié dans le menu. Cela évite également de n’avoir qu’un seul sous-menu s’il n’y a qu’un seul enfant.
        Avez-vous des idées ou suggestions ?
          • 2299
          • 62 Posts
          Peux-tu nous donner un lien vers le site, ou alors le contenu des différentes pages en question ? Sans ça, ça va être difficile de te faire une suggestion pertinente sur une autre piste de conception.

          Quote from: gl_sub at Jun 26, 2008, 10:13 AM
          Il me semble cependant que ça peut être utile pour l’utilisateur d’avoir le lien vers le parent (qui fonctionne comme la première partie de la catégorie) avec un nom approprié dans le menu.
          Moi, ça me semble surtout être une source de confusion. J’arrive sur une page, je vois 3 liens qui pointent vers 3 pages enfants, je clique sur le premier lien, j’arrive sur la même page... huh undecided Que tu mettes un lien vers le parent, c’est compréhensible pour remonter, mais de vouloir faire comme si c’était un enfant ? Je ne comprends pas...

          Quote from: gl_sub at Jun 26, 2008, 10:13 AM
          Cela évite également de n’avoir qu’un seul sous-menu s’il n’y a qu’un seul enfant.
          Quand c’est le cas, pourquoi ne pas mettre le contenu de ton enfant directement dans le parent ? Tu économises un clic inutile à l’utilisateur...
            • 10957
            • 32 Posts
            Quote from: aspeum at Jun 26, 2008, 11:54 AM

            Peux-tu nous donner un lien vers le site, ou alors le contenu des différentes pages en question ? Sans ça, ça va être difficile de te faire une suggestion pertinente sur une autre piste de conception.

            http://62.193.49.218:7569/fr/produits/index.php

            Quote from: aspeum at Jun 26, 2008, 11:54 AM

            Moi, ça me semble surtout être une source de confusion. J’arrive sur une page, je vois 3 liens qui pointent vers 3 pages enfants, je clique sur le premier lien, j’arrive sur la même page... huh undecided Que tu mettes un lien vers le parent, c’est compréhensible pour remonter, mais de vouloir faire comme si c’était un enfant ? Je ne comprends pas...
            Non en fait lorsque l’on clique sur le parent, on arrive directement sur le premier enfant, qui possède le contenu (ds le parent il n’y a que l’appel [[FirstChildRedirect]])
            Quote from: aspeum at Jun 26, 2008, 11:54 AM

            Quote from: gl_sub at Jun 26, 2008, 10:13 AM
            Cela évite également de n’avoir qu’un seul sous-menu s’il n’y a qu’un seul enfant.
            Quand c’est le cas, pourquoi ne pas mettre le contenu de ton enfant directement dans le parent ? Tu économises un clic inutile à l’utilisateur...
            J’essaye de mieux m’expliquer. Avec la solution de ne pas répéter le parent, dans le cas où l’on a A>B dans l’arbre on a la même chose dans le menu (cad un menu avec un seul enfant) tandis qu’en répétant le parent on a A>A’,B.
              • 2299
              • 62 Posts
              OK. Alors, je vois une autre piste. Ta page A, tu lui donnes comme pagetitle le nom de l’enfant, et comme menutitle le nom du parent. Et tu récupères le champ qui convient selon le niveau A (menutitle) > A (pagetitle), B, C, D.

              Ca fonctionnerait, ça ?
                • 10957
                • 32 Posts
                C’est exactement ce que je voudrais faire ! smiley Sauf que, c’était le sens de ma question initiale, je ne parviens pas à paramétrer WayFinder pour qu’il ré-affiche le parent au niveau des enfant (a priori ça se passe dans le inner template mais je n’ai pas de placeholder id du parent, pour ensuite récupérer par exemple son pagetitle comme tu le suggères...).


                  • 2299
                  • 62 Posts
                  Dans ce cas, je ne vois pas.

                  Bon, à tout hasard, je te file l’idée farfelue qui me vient. Faire deux menus Wayfinder. L’un avec juste le parent, l’autre avec les enfants. Et tu les places l’un au-dessus de l’autre.

                  Autre idée, qui me semble plus solide. Si tu indiques &includeDocs=`[*parent*]`, est-ce que ton problème n’est pas résolu ?
                    • 10957
                    • 32 Posts
                    Merci aspeum pour ton aide. Je ne comprend pas trop l’idée farfelue.../ wink
                    J’affiche mon menu dans mon template de page :
                    [!Wayfinder?startId=`[[UltimateParent? &topLevel=`2`]] &level=`4` &firstClass=`first` &lastClass=`last` &hereClass=`active`  &innerTpl=`menu.level2.innertpl` &levelClass=`deep`  !]
                    

                    c’est lui qui construit le menu à gauche, je ne vois pas trop comment imbriquer 2 menus Wayfinder... Je peux obtenir ce que je veux au PREMIER niveau en indiquant displayStart=`1` mais ce qu’il faudrait c un paramètre du style displayStarts, qui réaffiche le parent à chaque niveau.
                    Ta deuxième idée m’a donné une piste qui fonctionne. Je la décris ici :
                    je modifie le template rowtpl de WayFinder de cette façon :
                    [[DisplayMenuParentLi? &docid=`[+wf.docid+]` &wf.classes=`[+wf.classes+]` &wf.attributes=`[+wf.attributes+]`]
                    <li[+wf.id+][+wf.classes+]>
                        <a href="[+wf.link+]" title="[+wf.title+]" [+wf.attributes+]>[+wf.linktext+]</a>
                        [+wf.wrapper+]
                    </li>
                    

                    et je crée le snippet DisplayMenuParentLi comme ceci (non encore finalisé) :
                    <?php
                    $tvnames=array('menuindex','parent');
                    $tvoutput=$modx->getTemplateVarOutput($tvnames, $docid, 1);
                    $menuindex = $tvoutput['menuindex']; 
                    if ($menuindex!=0){
                        return '';//'<li>! '.$menuindex.'</li>';
                    }
                    $parent = $tvoutput['parent']; 
                    $tv = $modx->getTemplateVar('pagetitle', "",$parent);
                    $parentMenuTitle = $tv['value']; 
                    $output='<li>'.$parentMenuTitle.'</li>'; // à compléter avec classes, atrributs, lien, etc.
                    return $output;
                    ?>
                    

                    Et cela fonctionne de cette façon !
                    Merci aspeum pour ton aide ! smiley J’espère que ça servira à d’autres, cela me semble être un problème de conception assez fréquent mais je n’ai rien trouvé sur le forum...
                      • 2299
                      • 62 Posts
                      Ah bah de rien ! Tant mieux si j’ai pu t’aider, même indirectement !

                      Pense à éditer ton premier message pour indiquer qu’il est [Résolu] wink