We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 28173
    • 409 Posts
    Je bosse actuellement sur un site multilangue.
    Voici le début de mon arborescence :


    J’ai donc créé une entrée par langue à la racine. C’est ce que j’appelle par la suite le menu de niveau 1 (Français, English...)
    Je souhaiterai que sur les pages françaises par exemple, soit affiché un menu avec tous les éléments de niveau 2 de la langue (Bienvenue, Le Centre, Les Séjours...).
    Subtilité (et c’est là où je bloque), même si je suis dans une page de niveau 3 (Français > Le Centre > La Maison), je souhaite que soit affiché le menu de niveau 2 de la langue courante.

    Avant de poster ce topic, j’ai qd même pas mal cherché et bidouillé.
    Je me suis orienté vers l’utilisation du plugin PHx pour faire des tests conditionnels, de GetParent et bien sur de Wayfinder.
    Voici donc ma tambouille actuelle qui ne fonctionne pas correctement, d’autant plus qu’elle ne marche que sur les pages française (d’id=2).
    [+phx:if=`[[GetParent? &field=`id` &level=`0`]]`:is=`2`:then=`[[Wayfinder? &startId=`[[GetParent? &field=`id` &level=`0`]]` &level=`1` ]]`:else=`[[Wayfinder? &startId=`[[GetParent? &field=`id` &level=`1`]]` &level=`1`]]`+]

    Il est possible qu’il y aie une solution plus "légère"qui offrent le résultat escompté. Je suis bien entendu grandement intéressé par vos conseils wink
      • 11975
      • 2,542 Posts
      Salut,

      la solution la plus simple est d’utiliser ultimateParent pour fixer la valeur de startId.

      [!wayfinder? &startId=`[[ultimateParent]]` !]

      :-)
        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
        • 28173
        • 409 Posts
        J’ai lu sur le forum en effet que tu avais utilisé ce snippet pour gérer tes sites multilingues basé sur des folders.
        J’avais bien pensé à l’utiliser aussi au lieu de GetParent mais je n’ai pas réussi à obtenir l’effet escompté.

        Aurais-tu un exemple d’appel complet et fonctionnel du snippet ? Car l’appel posté en exemple ci-dessus ne fonctionne pas tel quel et mes tentatives d’adaptation sont restés improductifs undecided
          • 11975
          • 2,542 Posts
          J’ai posté le code pour que tu aies la syntaxe à utiliser pour passer en parametre d’un snippet un autre snippet

          C’est étonnant que tu n’obtiennes pas le résultat escompté avec cet appel ...
          puisque par exemple, si l’appel est fait depuis la page (16) ton ultimateParent est 2, donc si level est à 1 tu auras ton menu 2.

          :-)
            Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
            • 28173
            • 409 Posts
            Et bien justement, c’est là qu’il y a un pb.
            J’ai juste mis le code [[UltimateParent]] sur ma page.
            Quand je vais sur la page 16, mon ultimateparent est 4 ! Pas 2.
              • 11975
              • 2,542 Posts
              Je pense que le pb provient du fait que tes folders langues ne sont pas publiés.

              :-)
                Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                • 28173
                • 409 Posts
                C’était exactement ça ! wink

                Tant que je suis là, je cherche un moyen de faire en sorte que si je tente d’ouvrir la page folder 2 (qui est vide), je sois automatiquement redirigé vers une autre page de mon choix (dans le cas présent, la page de Bienvenue d’ID 3).
                  • 11975
                  • 2,542 Posts
                  tu peux utiliser le snippet firstChildRedirect pour ça.
                  C’est un snippet d’openGeek.

                  Il doit être dans le repository.


                  :-)

                  Ici => http://modxcms.com/FirstChildRedirect-834.html
                    Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                    • 28173
                    • 409 Posts
                    Effectivement ça semble correspondre à mon besoin.
                    Par contre qd je tente d’afficher la page 2, j’obtiens l’erreur suivante :
                    « MODx Parse Error »
                    MODx encountered the following error while attempting to parse the requested resource:
                    « Execution of a query to the database failed - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND sc.published=1 AND sc.deleted=0 AND (sc.privateweb=0) AND s »
                          SQL: SELECT DISTINCT sc.id,sc.menutitle,sc.pagetitle,sc.introtext,sc.menuindex,sc.published,sc.hidemenu,sc.parent,sc.isfolder,sc.description,sc.alias,sc.longtitle,sc.type,if(sc.type='reference',sc.content,'') as content, sc.template,sc.link_attributes FROM `atelier`.modx_site_content sc LEFT JOIN `atelier`.modx_document_groups dg on dg.document = sc.id WHERE sc.parent = AND sc.published=1 AND sc.deleted=0 AND (sc.privateweb=0) AND sc.hidemenu = 0 GROUP BY sc.id ORDER BY sc.menuindex ASC; 
                      • 11975
                      • 2,542 Posts
                      Tu as mis l’appel du snippet dans le content du document(2)
                      [[FirstChildredirect? &docid=`3` ]]

                      L’erreur signale que $docid ne renvoie pas de valeur, si tu ne l’as pas renseigné dans ton appel, tu peux verifier la valeur en changeant le code du snippet

                      $docid = (isset($docid))? $docid: $modx->documentIdentifier;
                      return $docid;//rajoute cette ligne 
                      


                      :-)
                        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l