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

    J’ai une configuration à laquelle je n’avais jamais été confronté et je galère un peu à parvenir à mes fins.
    Voici mon arborescence :
    - Accueil
    - Articles
         --  Thème 1
                   ---- Article 1
                   ---- Article 2
                   ---- Article 3
                   ---- Article 4
                   ---- Article 5
                   ---- Article 6
                   ---- Article 7
         --  Thème 2
                   ---- Article 1
                   ---- Article 2
                   ---- Article 3
                   ---- Article 4
                   ---- Article 5
                   ---- Article 6
         --  Thème 3
                   ---- Article 1
                   ---- Article 2
                   ---- Article 3
                   ---- Article 4
                   ---- Article 5
                   ---- Article 6
                   ---- Article 7
                   ---- Article 8

    Lorsque l’on se trouve sur la page Articles, mon client souhaite avoir la liste des thèmes, avec dans chacun de ceux-ci les 5 derniers articles publiés seulement.

    Ca parait bête comme ça, mais je me bât depuis 2h avec Wayfinder, Ditto et GetField sans succès !

    Avoir la liste complète des articles dans chaque thème, je sais faire, mais les 5 derniers... huh

    Donc si quelqu’un a déjà été confronté au pb, je veux bien un coup de pouce smiley
      • 23050
      • 1,842 Posts
      Hello smiley

      J’imagine que si utilises le paramètre &limit de Wayfinder, dans un unique appel, ça va pas ? Pareil pour &display avec Ditto ?

      La première idée qui me vient à l’esprit serait de faire un premier appel qui liste les thèmes. Ensuite, dans le template qui sert à afficher le niveau 2, refaire un appel pour les 5 derniers articles. Cela dit, j’ai jamais testé ! smiley

      En gros :

      Appel Wayfinder avec &limit=1 pour ne prendre que les thèmes. Dans le &rowTpl, tu refais un appel avec &limit=5 et &startId=le parent

      A tester :/
        • 28173
        • 409 Posts
        Salut Perrine smiley
        La première idée qui me vient à l’esprit serait de faire un premier appel qui liste les thèmes. Ensuite, dans le template qui sert à afficher le niveau 2, refaire un appel pour les 5 derniers articles. Cela dit, j’ai jamais testé !
        Moi si, et avec cette manip je suis confronté à un nouveau problème.
        Je m’explique smiley

        Je lance l’appel WF qui me liste les thèmes avec ce code :
        [!Wayfinder? &outerTpl=`wfOuter` &rowTpl=`wfRow` &innerTpl=`wfInner` !]

        Voici le contenu du template wfInner :
        <ul>
          [[Ditto? &tpl=`LastPub` &startID=`13` &depth=`2` &paginate=`0` &displayArchive=`0` &summarize=`3` &dateSource=`pub_date` &sortBy=`pub_date` &dateFormat=`%d/%m/%y`]]
        </ul>

        J’ai placé dans le startID, le n° du doc "Theme 1"

        Le résultat est le suivant :

        Theme 1
        Article 1 (du thème 1)
        Article 2 (du thème 1)
        Article 3 (du thème 1)
        Theme 2
        Article 1 (du thème 1)
        Article 2 (du thème 1)
        Article 3 (du thème 1)
        Theme 3
        Article 1 (du thème 1)
        Article 2 (du thème 1)
        Article 3 (du thème 1)
        Rien d’anormal, puisque c’est ce que j’ai demandé smiley

        La question devient donc : comment faire pour que le paramètre startID passé à Ditto soit celui de chaque Thème ?
          • 23050
          • 1,842 Posts
          Normalement &startID=`[+id+]` devrait fonctionner car on se trouve dans un boucle Wayfinder et on accède aux placeholders des documents, en l’occurrence id

          C’est un peu comme si tu affichais <a href="[+id+]"> dans un template Wayfinder

          A tester encore smiley

          Peut-être qu’il sera nécessaire d’appeler Ditto en [!...!]
            • 23050
            • 1,842 Posts
            Euh non pardon... [+parent+] ! L’id va retourner l’id de l’article en cours de traitement donc article1, article2, etc...
              • 11975
              • 2,542 Posts
              hello,

              de mémoire tous les placeholders de WF sont préfixés [+wf.nomplacekholder+]
              donc ça devrait être &parents=`[+wf.docid+]`.

              :-)

                Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                • 28173
                • 409 Posts
                Fort de vos conseils, j’ai creusé un peu la question. Figurez-vous que ça s’avère plus épicé que prévu laugh
                Car en effet, il serait logique de se dire que le code de wfInner ci-dessous fonctionnerait en utilisant les placeholders de WF :
                <ul>
                  [[Ditto? &tpl=`LastPub` &startID=`[+wf.docid+]` &depth=`2` &paginate=`0` &displayArchive=`0` &summarize=`3` &dateSource=`pub_date` &sortBy=`pub_date` &dateFormat=`%d/%m/%y`]]
                </ul>

                Sauf que... sauf que... dans la doc de WF, on y apprend que ce placeholder ( [+wf.docid+] ) n’est pas valide dans les templates "containers" (autrement dit, dans outerTpl et InnerTpl)
                Il faudrait pour cela mettre l’appel Ditto dans innerRowTpl par ex... sauf que c’est le job de Ditto de court-circuiter le InnerRow !

                Bref là je sèche un peu...
                  • 21946
                  • 283 Posts
                  Je ne comprends pas bien :pourquoi ne pas mettre un appel Ditto avec display=`5` pour chaque theme en entrant toi meme les bons ids dans les appels?
                    [url=http://www.savepoint.fr/index.php?id=38] -petits tuyaux pour les d
                    • 11975
                    • 2,542 Posts
                    Re,

                    si tu n’as que deux niveaux à afficher tu peux t’en sortir avec Ditto tt seul.
                    Il suffit d’imbriquer les appels.
                    Le premier liste les repertoires, le second dans ton tpl liste les articles de ce repertoire

                    [[Ditto? &parents=`idFolderDeDepart` &depth=`1` &tpl=`appelDitto`]]

                    et dans ton chunk appelDitto

                    [[Ditto? &parents=`[+id+]` &depth=`1` &tpl=`itemTpl` &display=`5`]]

                    Ditto supportant PHx il éxécutera l’appel contenu dans le &tpl.

                    :-)

                      Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                      • 28173
                      • 409 Posts
                      Et oui bien sûr !
                      Ca fonctionne ainsi Heliotrope smiley Merci.

                      nyl auster : je souhaitais que la liste des thèmes soient gérées dynamiquement et non manuellement en cas d’ajout ou de suppression smiley Il me fallait donc un appel imbriqué smiley