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

    Pourquoi mon petit snippet de crotte :

    <?php
    $ImgGal = (isset($_GET['img'])) ? $_GET['img'] : "1";
    return $ImgGal;
    ?>


    me renvoie bien le $ImgGal quand je l’appelle [[ ]] mais ne me renvoie rien quand je l’appelle [! !] ?

    Mon but est de changer une image en passant son id (1 à 5) dans l’url. Le snippet est appelé dans le src de ma balise img.

    Sauf que si je l’appelle [[ ]], mon doc étant en cache, l’image ne change pas... Et je voudrai vraiment garder mes docs en cache.

    Merci smiley
      • 5811
      • 1,717 Posts
      Bonsoir Perrine,

      voici le test que j’ai fait et qui semble marcher :
      j’ai un doc id=8, cacheable, donc le content est
      <img height="242" src="assets/images/img[!GetImg!].gif" width="220" />


      et le code du snippet GetImg est :
      <?php
      $id = isset($_GET['img']) ? $_GET['img'] : '1';
      return $id;
      ?>


      lorsque j’appelle http://127.0.0.1/modx0961/modx/index.php?id=8&img=3 j’ai bien l’image img3
      et quand http://127.0.0.1/modx0961/modx/index.php?id=8&img=2 j’ai le document avec l’image img2

      Cela ne marche que si l’appel de snippet est non caché. Teste et dis moi si c’est ok.

      Par contre:
      <?php
      $id = isset($img) ? $img : '1';
      return $id;
      ?>
      ne marche pas. Le contexte de l’appel n’étant pas passé dans le code src=""
        • 27582
        • 57 Posts
        Bonjour,

        Par curiosité, j’ai fait le même test que coroico . J’ai juste repris le code de Perinne par copier/coller - au cas où il y aurait une faute de frappe ou un truc caché ( huh ). J’ai testé sur MODx 0.9.6.0:
        <?php
        $id = isset($_GET['img']) ? $_GET['img'] : '1';
        return $id;
        ?>
        


        Et la page de test contenait:
        <img src="img[[GetImg]].gif" />
        <img src="img[!GetImg!].gif" />
        


        Le test était le suivant:
        1) on vide la cache,
        2) on charge l’URI monsite/test-getimg?img=9, on obtient
        <img src="img9.gif" />
        <img src="img9.gif" />
        

        3) on charge l’URI monsite/test-getimg?img=10, on obtient:
        <img src="img9.gif" />
        <img src="img10.gif" />
        


        C’est ce que tu voulais? Si effectivement ça ne marche pas chez toi, il doit y avoir une subtilité ailleurs que dans le code...
          Jeune dipl
          • 23050
          • 1,842 Posts
          Mouarf... je comprenais pas pourquoi tu me faisais une telle réponse Sylvain car j’étais persuadée d’avoir répondu... sauf que j’ai pas cliqué sur Post ! J’ai du faire autre chose entre temps et voilà.

          Bref...

          Je disais que mon template n’appelle pas <img src="img[[GetImg]].gif" /> mais <img src="[*photo[[GetImg]]*]" /> et on m’a gentiment glissé à l’oreille ( grin ) que ça ne pouvait pas fonctionner car j’essayais d’appeler le snippet dans un nom de tv ! Cela dit, ça reste à creuser car l’appel du snippet en caché fonctionne.. enfin au moins une fois au premier chargement de la page.

          Entre temps, j’ai trouvé une autre solution, la même personne (décidement grin ), m’a redirigé vers MaxiGallery pour voir comment je pouvais m’en sortir avec une alternative en javascript.

          Merci Helio kiss

          Merci Coroico et Sylvain de vous être penchés sur mon cas wink
            • 11975
            • 2,542 Posts
            Pour ce qui est du fonctionnement dans un appel caché.
            Je pense que cela tient à l’ordre d’éxécution du parser de MODx.
            Si celui-ci était récursif (vivement la 0.9.7) ca fonctionnerait sans souci.

            Pour ceux que ca intéresse voir le post de Ryan qui détaille les nouvelles possibilités du parser et la nouvelle nomenclature des tags.
            =>http://modxcms.com/forums/index.php/topic,20512.msg127175.html

            :-)
              Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
              • 27582
              • 57 Posts
              Sinon, pour ce que veut Perrine, il y aurait pas moyen d’utiliser simplement la fonction de l’API [tt]getTemplateVar[/tt]

              Du coup, le snippet deviendrait un truc du genre:
              <?php
              $id = isset($_GET['img']) ? $_GET['img'] : '1';
              $tv = $modx->getTemplateVar("photo" . $id);
              return $tv["value"];
              ?>
              


              Et l’appel serait juste:
              <img src="[!GetImg!]" />
              


              EDIT: J’ai testé, ça semble fonctionner.
                Jeune dipl
                • 11975
                • 2,542 Posts
                Oui ca fonctionnera mais je trouvais dommage de pas utiliser MG qui proposait toutes les fonctionnalités recherchées (à l’exception de la gestion des images backend).

                :-)
                  Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                  • 27582
                  • 57 Posts
                  Ok, tu as raison: pourquoi vouloir toujours réinventer la roue...

                  ;)
                  Sylvain
                    Jeune dipl
                    • 23050
                    • 1,842 Posts
                    Merci Sylvain d’avoir creusé ! smiley Connais pas encore l’API MODx ... mes débuts en php sont ultra récents ! laugh

                    Je suis sur MG là, je vous tiens au courant