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

    J’ai un petit extrait de code qui fonctionne très bien comme snippet, je l’utilise pour tronquer mon champs "résumé" (l’appel est extrait dans un chunk - pour ma Page d’accueil)

    La seule chose que je ne comprends pas, c’est que pendant un appel, si des caractères spéciaux tels que "?" ou ":" sont présents dans mon champs résumé, l’extrait bugs (voir photo)

    Voici le snippet que j’utilise + son appel :

    <?php
    /* ----------
    parameters:
    $what - text to shorten
    $len - desired length of the shortened text
       ---------- */
    if (strlen($what) > $len) {
      /* there is a point to truncate */
      $what = preg_replace('/^(.{' . $len . ',}? ).*$/is', '$1', $what) . '...';
    }
    return $what;
    ?>


    [[truncate? &what=`[+summary+]` &len=`700`]]


    Ce "malheureux" détail fait régulièrement tout foirer dans mes pages ! >:(

    Est-ce que quelqu’un pourrait m’aider svp ?

    Merci d’avance
      Scuse my english...I&#39;m swiss
      • 21946
      • 283 Posts
      C’est pas juste un probleme de parsage? j’ai plutôt l’impression que tout simplement modx affiche ton [+summary+] au lieu de simplement le passer en paramètre non?

      Si tu essaies de mettre un texte à tronquer sans utiliser [+summary+] ça ne marche pas non plus?

      Si c’est pas ça, je ne sais pas; et si c’est ça je ne sais pas comment court-circuiter l’interprétation automatique de la balise par modx.
      J’ai fait un snippet un peu dans le genre avec le même fonctionnement que ton &what mais je n’arrivais pas à le faire marcher dans ditto non plus, ça l’affichait aussi à la place.

      Je nai pas essayé d’appeler le snippet avec des [!!] au lieu des [[]] pour voir si ça changeait quelque chose...
        [url=http://www.savepoint.fr/index.php?id=38] -petits tuyaux pour les d
        • 11975
        • 2,542 Posts
        Salut,

        c’est bien les caracteres & et ? contenu dans le texte qui sont la cause de tes ennuis.
        Le seul moyen de t’en sortir c’est d’utiliser les customplaceholder de ditto
        Pour cela il faudra ecrire un peu de code

        :-)
          Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
          • 19036
          • 119 Posts
          Merci pour vos réponses....

          Je vais essayer de voir un peu cela: http://wiki.modxcms.com/index.php/Ditto_Custom_Placeholders , mais je pense que je vais vite être dépasser...car question code...difficile !

          Dommage que cela bug juste à cause de ça....car ce snippet c’est vraiment de la balle !

          A plus

          Mehdi
            Scuse my english...I&#39;m swiss
            • 11975
            • 2,542 Posts
            salut,

            tu pourrais également essayer avec un modifier PHx pour substituer aux caracteres incriminés des code à la feedx &=>|xa| et ?=> |xq|
            avant que ne soit éxécuté le snippet mais je ne suis pas sur de l’ordre du parsage dans ce cas.


            <?php
            //PHx Modifier=>protect
            $o = str_replace(array(’?’,’&’),array(’|xa|’,’|xq|’),$output );
            return $o;

            ?>

            [[truncate? &what=`[+summary:protect+]` &len=`700`]]

            :-)

            P.S : regarde la doc du wiki pour PJHx et l’ajout de modifiers
            Bien sur il faut modifier le code du snippet truncate pour faire le remplacement inverse ;-)
              Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
              • 19036
              • 119 Posts
              Merci pour ton code, mais j’ai essayé, ça ne fonctionne pas....

              Modx est un outil génial, mais il me semble des fois bien compliqué pour des petites appli qui ne devraient pas autant prendre la tête...  huh

              N’est-il  pas possible d’avoir des modules de bases aussi élémentaires qui puissent fonctionner du premier coup...?

              Si quelqu’un à la solution à ce problème ou un moyen plus simple d’y parvenir, je suis preneur...!

                Scuse my english...I&#39;m swiss
                • 21946
                • 283 Posts
                Au fait ça ne marche pas en utilisant tout simplement phx? huh

                [+introtext:limit=`50`+]

                edit : j’ai testé chez moi, ça fonctionne smiley (mais pas testé avec les caractères qui posent probleme)

                  [url=http://www.savepoint.fr/index.php?id=38] -petits tuyaux pour les d
                  • 19036
                  • 119 Posts
                  Whoua....j’y croyais plus !

                  Ca fonctionne....j’avais essayé ce caracter limit, mais pas écrit comme toi !

                  T’est trop fort !!! Merci !!! smiley

                  Après le temps passé sur ce "*!&?!*%! truc.....je pourrais t’embrasser !

                    Scuse my english...I&#39;m swiss
                    • 21946
                    • 283 Posts
                    héhéhé, on s’est tous tapé notre petite crise nerf de ce genre. En général modx peut résoudre la plupart des trucs facilement mais faut trouver l’info...
                      [url=http://www.savepoint.fr/index.php?id=38] -petits tuyaux pour les d
                      • 19036
                      • 119 Posts
                      J’ai encore un petit souci avec ce système, comment faire pour éviter que phx:character_limit ne coupe un mot avant sa fin ?

                      Voici l’exemple :

                        Scuse my english...I&#39;m swiss