We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 1150
    • 7 Posts
    Bonjour à tous,
    voilà maintenant quelques temps que j’essaie de comprendre comment interagissent les chuncks et les snippet.
    J’ai essayé de créer un snippet dont le résultat est renvoyé par un "return $output;". Ca fonctionne, mais mon retour est brut de fonderie (pas de mise en page).
    Pour avoir une mise en page, j’ai directement écrit dans ma variable $output du code HTML, ca fonctionne mais ne me semble pas très propre vis-à-vis de MODx.
    Pour beaucoup de snippet il existe le paramètre &tpl (qui référence un chunck), mais comment est-il traité?
    Est-ce le core de MODx qui se débrouille? Ou est-ce simplement au niveau du snippet que le chunck est intégré dans la variable de sortie? Auquel cas, comment sont traités les placeholders?

    Merci!
      • 11975
      • 2,542 Posts
      Salut,

      Les snippets et les chunks peuvent être appelés depuis un template un document, une TV.
      Il n’y a pas de relation unilatérale et exclusive entre un snippet et un chunk.
      Un chunk peut contenir un appel de snippet et un snippet appeler un chunk pour gérer la présentation de l’output.

      Ex:

      Dans le code de ton snippet.
      <?php
      //pas testé mais c'est pour illustrer
      $tpl = "monchunkClient"
      $sql = "select nom, prenom, age from table_client where id=xx";
      
      $rs = $modx->dbQuery($sql );
      $client = $modx->getRow($rs);
      //client est un tableau associatif les cles seront remplaces par leur valeur si elles correspondent au placeholder du chunk
      $output = $modx->parseChunk($tpl,$client,'[+','+]');
      return $output;



      Dans le chunk:

      [+nom+]
      [+prenom+]
      [+age+]
      
      


      L’idéal pour avoir plusieurs point de vue c’est de regarder le code des snippets ditto et wayfinder.

      :-)
        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
        • 1150
        • 7 Posts
        OK, merci pour la rapidité.
        J’essaie, mais j’ai toujours un problème.
        D’un côté je charge bien mon chunk avec modx->getChunk de l’autre j’utilise mysql_fetch_row (car base de données externe) qui renvoi un array.
        Mais lorsque j’utilise parseChunk, rien ne se passe.

        Une piste SVP!!!

        Merci.
          • 11975
          • 2,542 Posts
          Salut,

          si tu utilises getChunk il faut effectuer le remplacement des placeholders avec la fonction php str_replace.
          Lorsque que tu invoques la fonction parseChunk modx se charge d’effectuer le getChunk.
          Il suffit de lui donner le nom du chunk.

          :-)
            Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
            • 1150
            • 7 Posts
            Salut,
            Super ça fonctionne.

            Merci.