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

    Je tente de faire quelque-chose d’assez classique et pourtant, je n’y arrive pas: a mon avis je me suis embarqué sur une solution mal adaptée.

    Mon besoin est simple:
    • Je veux avoir une page de mon site qui regroupe des "liens utiles" (vers d’autres sites);
    • je veux aussi qu’il soit facile d’ajouter/modifier/supprimer un lien de la liste;
    • enfin, les liens doivent être groupés en catégories.

    La solution que j’ai retenue est de créer un dossier, et de créer dans ce dossier un document-lien pour chacun de mes liens externes. Cette section de l’arbre de documents ressemble à ça:
    • Liens utiles[list][li]Alsacreations
    • Apache
    • Le Hub
    [/li][/list]

    Le document "Lien utiles" contient juste un appel à Ditto:
    [!Ditto? &tpl=`LinkTpl` &sortBy=`tvLinkGroup` !]

    Le template utilisé est simple lui aussi:
    <p><a href='[+content+]'>[+pagetitle+] -- [+tvLinkGroup+]</a></p>


    Comme vous le constatez, j’ai aussi créé une TV dans le modèle associé à mes liens pour choisir la catégorie. Ca marche, et j’obtiens ceci:
    Le Hub -- Développement Web
    Alsacreations -- Développement Web
    Apache -- Administration


    Seulement, là, les liens sont seulement ordonnés selon leur catégorie. Moi, je voudrais aussi qu’ils soient groupés par catégorie pour obtenir un résultat de ce genre:
    Développement Web
       * Le Hub
       * Alsacreations
    Administration
       * Apache


    Ca fait un petit moment que je cherche dans la doc de Ditto, et je ne vois absolument pas comment faire. C’est pourquoi, comme je disais au début, j’en viens à me demander si j’ai choisi la bonne approche huh

    D’avance merci,
    Sylvain.
      Jeune dipl
      • 11975
      • 2,542 Posts
      Salut,

      à ce jour ce que tu cherches à faire n’est pas possible, avec Ditto, il n’exsite pas d’options GroupBy par exemple.

      La seule solution c’est d’écrire un petit snippet:
      1/ je recupere la liste des options de la TV (categorie)
      2/ pour chacune j’execute Ditto( modx->runSnippet) pour produire la liste de liens pour cette valeur d’option de la TV

      :-)
        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
        • 27582
        • 57 Posts
        Merci de cette réponse rapide!
        Effectivement, quand j’ai vu que je ne trouvais rien qui ressemblait à un ’group by’ de SQL, je me suis bien dit que c’était mal barré...

        Sinon, en fouinant, sur le forum, j’ai vu qu’on parlait souvent de PHx. Je n’ai pas encore regardé, mais j’ai l’impression que ça introduit des structures de contrôle conditionnelles pour l’affichage des placeholder. Ca vaut le coup que je m’y atèle, ou c’est une fausse piste?

        Sylvain.
          Jeune dipl
          • 27582
          • 57 Posts
          Bon, j’ai réussi à m’en tirer avec PHx:

          J’ai créé un custom modifier pour PHx, qui teste si la valeur d’entrée change entre les appels successifs:
          <?php
          global $phx_diff_old_value;
          if ($output!= $phx_diff_old_value)
          {
            $phx_diff_old_value= $output;
            $condition[] = 1;
          }
          else
          {
            $condition[] = 0;
          }
          return $output;
          ?>


          Ensuite, j’ai modifié mon chunck comme ceci:
          [+tvLinkCategory:diff:then=`<h4>[+tvLinkCategory+]</h4>`+]
          <p><a href='[+content+]'>[+pagetitle+]</a></p>


          Et voilà: j’obtiens ce que je voulais. Mais toujours pas sûr que c’était la méthode la plus orthodoxe...

          A+,
          Sylvain.
            Jeune dipl