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

    Ce que j’ai compris sur les Snippets :
    il permettent d’insérer du code PHP dans une page de contenu fixe pour rendre cette page dynamique en lançant simplement le snippet par : [[snippetname]]

    Disons alors que sur ma page de contenu fixe je veuille enchainer 3 snippets genre :

    lorem ipsum lorem ipsum lorem ipsum lorem ipsum [[snippet1]] lorem ipsum lorem ipsum lorem ipsum lorem ipsum [[snippet2]] lorem ipsum lorem ipsum lorem ipsum [[snippet3]]

    Au premier regard j’ai cru que les snippets fonctionnaient en gros comme des Include en php, autrement dit, le document fixe qui les appelle est au final une seule page traitée par le serveur et se compose d’un contenu dynamique et d’un contenu fixe.

    Si c’était le cas je m’attendais à ce que le [[snippet2]] puisse utiliser les variables qui ont été calculées dans le [[snippet1]] .
    exemple le snippet1fait son boulot et me dit $x= "tarte aux pommes" ; et si dans le snippet2 je fais echo $x; j’aurais voulu qu’il m’affiche "tarte aux pommes" .

    euhhhh bah apparemment ça marche pas comme ça. Donc la question :
    Comment dans un snippet récupérer les variables qui ont été traitées par un autre snippet ?

      • 21946
      • 283 Posts
      Prends avec des pincettes ce que je dis car je ne connais pas non plus le fonctionnement exact de la chose wink :

      apparemment les snippets fonctionnent plus comme des fonctions php; enfin je suppose puisqu’il y a un "return" en général et que comme tu as pu voir les variables n’existent plus en dehors du snippet.

      Pour ta question tu peux imbriquer tes appels de snippets. Si tu as besoin de la valeur que retourne le snippet1 pour faire tourner le snippet2 tu peux écrire :
      [[snippet2? &id=`[[snippet1]]`]]

      Dans le cas où tu aurais plusieurs valeurs à communiquer, j’imaginer que tu peux essayer de passer par un array mais je ne sais pas si ça marche...

      Sinon, mais je n’ai jamais essayé, peut etre qu’il est possible comme dans une fonction php normale de déclarer certaines de tes des variables comme étant des "globales";
       global $ma_variable;

      c’est à dire qui existent aussi en dehors de la fonction. Jamais testé par contre... Et puis à manipuler avec précaution pour pas causer des interférences avec les autres snippets si jamais ça marche, faudrait pas déclarer en global une variable genre "id" qui est sans doute utilisé dans plusieurs snippets.
        [url=http://www.savepoint.fr/index.php?id=38] -petits tuyaux pour les d
        • 14422
        • 12 Posts
        merci nyl
        je m’en vais tester ça mais j’ai quelques doutes, en tout cas sur le "globals", je crois que je dois oublier, ça risque de mettre trop le foutoir.
        s’il n’y a pas moyen de faire communiquer les snippets entre eux, je trouverai certainement une solution au niveau de la "logique" de mon modèle, je me dis que si c’est codé comme ça dans modx c’est qu’il y a une raison et qu’il y a moyen de faire autrement .... mais pour l’instant les raisons m’échappent.

        Au fait, je crois que tu te plantes sur les caribous, selon les écrits de BHL ils ne relèvent pas d’un spinozisme post-marxiste mais d’un marisme post spinozisme, et vice-versa.

        wink
          • 21946
          • 283 Posts
          bin si la déclaration en globale marche et que tu nommes tes variables avec des noms bien spécifiques ($jaime_la_truite, ça risque pas d’interférer), y’a pas de souci?
          encore faut-il que ça marche ce que je n’ai jamais essayé smiley

          s’il n’y a pas moyen de faire communiquer les snippets entre eux,

          L’imbrication de snippet marche comme décrite ci-dessus, je m’en sers souvent donc ça devrait pouvoir t’aider. (et puis il y a l’idée de transmettre plusieurs variables au besoin via un array php qui marche peut être aussi)


          selon les écrits de BHL ils ne relèvent pas d’un spinozisme post-marxiste mais d’un marisme post spinozisme, et vice-versa.

          oui mais seulement les mardis.
            [url=http://www.savepoint.fr/index.php?id=38] -petits tuyaux pour les d