We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 28589
    • 56 Posts
    Hello !
    (Merci pour votre aide sur le RSS hier, ça marche nickel)

    Donc, je voudrais appeler un ou plusieurs snippets dans un snippet, mais je n’y arrive pas.

    Par exemple, j’ai une page avec dedans : [!Snippet1!]

    Et dans ce snippet Snippet1, je voudrais faire par exemple :

    <?php
    echo ’<p>Avant snippet 2</p>’;
    ?>

    [!Snippet2!]

    <?php
    echo ’<p>Après snippet 2</p>’;
    ?>

    Mais apparemment, il faut pas faire comme ça...
    J’ai essayé quelques autres trucs au pif ("Snippet2;" dans le code PHP, comme si c’était une constante, etc), mais rien ne marche.
    Et mes recherches sur ce sujet s’avèrent infructueuses...

    Merci d’avance.
      • 16732
      • 592 Posts
      il faut utiliser runSnippet :

      $params['startId'] = 1;
      $output= $modx->runSnippet('Ditto', $params);
        • 25080
        • 175 Posts
        Je pense que tu devrais tenter de jouer entre les snippet, et les chunk
          • 28589
          • 56 Posts
          Okay, merci !

          Pour l’instant je vais opter pour le runSnippet (qui marche bien), puis je verrai plus tard pour la possibilité des chunks, si j’ai le temps de nettoyer mon code... J’ai lu les bonnes pratiques comme quoi il fallait séparer le côté fonctionnel de l’HTML, et donc qu’il faut pas utiliser de HTML dans les snippets, mais pour l’instant je convertis mon ancien code à la bourrin jusqu’à ce que ça marche. :p

          Sinon, si j’ai tout compris, il faut faire un echo du résultat d’un runSnippet ($output ci-dessus) pour afficher les echo se trouvant dans cet autre snippet... Par défaut, tout semble être pris en compte (fonctions et co) sauf les affichages, qu’il faut appeler explicitement.
            • 16732
            • 592 Posts
            Quote from: Stifu at Jul 22, 2008, 01:42 PM


            Sinon, si j’ai tout compris, il faut faire un echo du résultat d’un runSnippet ($output ci-dessus) pour afficher les echo se trouvant dans cet autre snippet... Par défaut, tout semble être pris en compte (fonctions et co) sauf les affichages, qu’il faut appeler explicitement.

            En fait il faut stocker toutes tes sorties issues de ton snippet dans une variable (par convention $output) et faire à la fin de ton snippet un : retun $output

            <?php
             // monsnippet
            
            
            // mes traitements PHP
             $date = date();
            
            //association des mes sorties a des placeholders d'un chunk
             $chunkArr ['date'] = $date;
            //On remplace les placeholders ([+date+]) du chunk par les valeurs et l'on met le tout dans $output 
            $output .= $modx->parseChunk('chunk_bloc_date', $chunkArr, '[+', '+]');
            
            //Utilisation de Ditto dans mon snippet, la sortie est ajoutée à $output
             $params['startId'] = 1;
             $output .= $modx->runSnippet('Ditto', $params);
            
            //j'affiche le tout
            return  $output;
            ?>
            


            Facile MODx non ? laugh
              • 28589
              • 56 Posts
              Okay merci.
              De toute façon, je n’ai même pas d’affichage dans les snippets en question, je voulais juste faire un echo ’test’; pour vérifier que mon sous-snippet était bien appelé. Mais c’est bon à savoir pour l’avenir !

              En tout cas MODx me plait bien (contrairement aux autres CMS que j’ai testé jusque là), je sens que ça va devenir mon choix de prédilection. cool
                • 25080
                • 175 Posts
                Et quand tu penses que la prochaines version est dites encore plus puissante...