We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 31477
    • 6 Posts
    J’utilise Wayfinder pour mon menu à l’horizontal.

    Mon but étant d’afficher un menu centrer du genre :
    menu_1 - menu_2 - menu_3

    Mais ça m’affiche ceci :
    menu_1 - menu_2 - menu_3 -

    Dû au fait que mon chunk row est établi comme cela :
    <a class="[+wf.classnames+]" href="[+wf.link+]"><div>[+wf.linktext+][+wf.wrapper+]</div></a> -


    Ce que je souhaite faire donc, c’est qu’au dernier nom du menu il ne m’affiche pas le tiret.
    Je sais le faire en php, mais comment le faire sur Modx (étant débutant dessus) ?

    C’est pour ça aussi que je met "et dynamique en général", car cette opération peut se retrouver sur différent élément du site que je suis entrain de faire.
    Merci


      • 15001
      • 697 Posts
      Ca a l’air de rien, mais c’est pas si facile comme question...

      Une idée pourraît être de placer le tiret tout en début de chunk et d’utiliser ensuite les peudo-classes CSS :
      :first-child et :first-letter pour régler l’apparence du 1er caractère (le tiret) du 1er élément.

      Il faudrait pour celà que les entrées de menus soient encapsulées (p. ex. dans des <span>...</span>) et le tout dans un conteneur parent (p. ex. une <div id="#monMenu">...</div>).

      On mettrait alors quelque chose du genre dans la feuille CSS :
      #monMenu:first-child:first-letter {color:#ffffff;font-size:1px;}

      Ci-dessus, je suppose que le fond de la page est blanc et qu’on donne la même couleur au tiret.
      Sauf erreur, il on ne peut pas donner une taille nulle au texte, d’où font-size:1px.

      Je ne suis pas certain que les pseudo-classes soient chaînables et je ne garantis donc pas le code ci-dessus.
      Juste une idée. A tester et adapter...
        • 31477
        • 6 Posts
        Merci pour ta réponse Jul, mais cette façon n’est pas très "correct" vis à vis du code je trouve.
        Ma couleur de fond de page est bien blanc, mais mon menu à une couleur dégradé.

        En fait, j’aurai aimé savoir comment on mettait des conditions en php et où ? (je n’ai pas encore tout compris au snippet, tv et à quoi ça servait)

        Autre exemple : j’ai 3 news à afficher à la vertical cette fois, en-dessous de chaque news je met un <hr />, mais à la dernière news je ne veux pas de <hr />. Je ne pourrai pas régler ceci en css.
          • 6726
          • 7,075 Posts
          Jamais utilisé de caractère pour séparer mes items de menu, je préfère styler via des listes en CSS (dans ton cas, j’aurai utilisé une liste en ligne avec une bullet "-" ) mais admettons, voici comment je ferai :

          [tt]<a class="[+wf.classnames+]" href="[+wf.link+]"><span>[+wf.linktext+][+wf.wrapper+]</span></a><span class="[+wf.classnames+]">-</span>[/tt]

          (tu noteras que j’ai remplacé le <div> qui est à l’intérieur du <a> par un span car ton code ne validera pas tu n’as pas le droit de mettre un élément de bloc dans un autre élément de bloc tongue

          &lastClass ayant comme valeur "last" par défaut, il suffit ensuite de spécifier :

          [tt]span.last {display: none;} [/tt]



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


            MODx est l&#39;outil id
            • 31477
            • 6 Posts
            J’ai trouvé la solution.
            Tout d’abord merci à Jul et Davidm pour leurs aide.

            Effectivement, mes div dans <a class="[+wf.classnames+]" href="[+wf.link+]"><div>[+wf.linktext+][+wf.wrapper+]</div></a>| étaient en trop.
            D’ailleurs j’ai même enlever les span et tout mis dans le <a> dans le css, et j’ai retiré ma séparation de fin qui est "|". Ce qui donne :
            <a class="[+wf.classnames+]" href="[+wf.link+]">[+wf.linktext+][+wf.wrapper+]</a>


            Ensuite j’ai ouver snippets/wayfinder/wayfinder.inc.php et c’est là que j’ai fait la modification.
            J’ai simplement rajouté le code suivant à la 218 lignes (en-dessous du $output .= str_replace($usePlaceholders,$phArray,$useChunk);. Ce qui fait :
            //Process the row
            $output .= str_replace($usePlaceholders,$phArray,$useChunk);
            //Permet de trouver le dernier lien du menu pour ne pas lui mettre la séparation
            if(!eregi(’last’, $output)){
            $output .= ’|’;
            }
            //Return the row
            return $output . $this->_config[’nl’];
            }

            C’est le if(!eregi(’last’, $output)){$output .= ’|’;} que j’ai rajouté.

            Je vous ai mis l’aperçu (qui n’est pas le résultat final) en pièce jointe.


              • 6726
              • 7,075 Posts
              Hmmm, je ne pense pas que le hack était nécessaire, et pour la maintenance à chaque mise à jour il faudra re-hacker... la solution CSS doit fonctionner aussi...
                .: COO - Commerce Guys - Community Driven Innovation :.


                MODx est l&#39;outil id