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

    Je suis confronté à un petit problème avec ditto :

    Je souhaite afficher des news en page d’accueil, ces news ne comprennent que les résumé des articles. Si les résumés sont trop long, j’aimerais que ditto les coupent.

    pour cela je fait :
    [!Ditto? &startID=`0` &summarize=`3` &multiLevel=1 &paginate=`1` &trunc=`1` &truncSplit=`1` &truncLen=`20`]]


    Le problème, c’est qu’il ne coupe pas mes résumés, si ils font 100 caractères de long, il affiche 100 caractère. Par contre, si je ne met aucun résumé, ditto se met à afficher le corps du texte par défaut, et dans ce cas la ça marche.

    Donc ma question, comment appliquer le trunk au résumé comme pour le contenu ..?
      • 11975
      • 2,542 Posts
      salut,

      il faudrait que tu précises la version de ditto que tu utilises.
      Je te recommande la beta 1.1.2 qui corrige les bugs de filtrage.

      Si tu pouvais également préciser le contenu de ton chunk ca peut aider

      A première vue, je dirai que l’un des parametre est faux =>truncSpli
      Si le code php ne te rebute pas regarde directement le source pour connaitre la liste complète des parametres et leur orthographe.

      :-)
        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
        • 23050
        • 1,842 Posts
        Je t’invite à aller voir sur ce post qui retrace mon parcours assez similaire au tien wink

        Il semble que la clé réside dans le paramètre $truncChars (apparu dans la version 1.1 de Ditto je crois) wink

        Edit : ce n’est pas &trunk mais &trunc
          • 33579
          • 52 Posts
          pour heliotrope et Perrine : J’ai edité mon premier post en corrigant les fautes de frappe, en effet je ne les ai pas faite dans mon code (j’ai du me foirer dans mon copier collé)...

          sinon j’ai installé Ditto 1.1 beta 2 pour tester et j’ai lu ton post Perrine.

          j’en suis donc arrivé à ca :
          [!Ditto? &startID=`0` &hideFolders=`1` &multiLevel=`1` &paginate=`1` &summarize=`2` &trunc=`1` &truncSplit=`0` &truncLen=`10`!]
          

          Et ca ne marche toujours pas !

          J’ai testé avec &truncOffset et &truncChars, ca ne changai pas grand chose (pas ce que je voulais en tout cas)

          Je suis donc toujours bloqué.... si quelqu’un à une solution, ca me parrait étrange que, vu comme ditto est répandu, personne ne se soit penché plus précisément sur le sujet.
            • 23050
            • 1,842 Posts
            Quote from: zmove at Nov 20, 2006, 09:18 AM

            Je suis donc toujours bloqué.... si quelqu’un à une solution, ca me parrait étrange que, vu comme ditto est répandu, personne ne se soit penché plus précisément sur le sujet.

            C’est ce que je me suis dit aussi ... mais bon ^^
            J’en était arrivée à la conclusion que &truncChars permettait de faire une réelle troncature en ne prenant en compte que les caractères du texte (et pas les éléments HTML)... le problème qui a suivi et que parfois, les lettres accentués (é pour é par exemple) étaient mal coupées et du coup, je me retrouvais avec des summary contenant des lettres accentuées pas finies (&eac par ex) et donc mal affichées.

            J’ai abandonné et utilisé le résumé du document pour faire ce que je souhaitais.
              • 11975
              • 2,542 Posts
              je dois avouer que c’est une fonctionnalité que je n’utilise pas.
              Je lui préfère la solution "résumé" moins aléatoire.

              Quoiqu’il en soit il faudrait peut etre insisté un peu auprès de mark pour qu’il se penche sur la question.
              Ou encore mieux trouvé une solution et la poster dans le fil de ditto.

              :-)
                Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                • 33579
                • 52 Posts
                oui, mais d’après ce que j’ai lu, dans ton cas, il coupait bien le résumé à l’endroit que tu voulais sans compter ce problème d’accent...

                Moi, il ne coupe rien du tout, si j’ai 255 lignes dans mon résumé, il va m’afficher 255 lignes dans ma news.

                Attention, quand je parle de résumé, je parle du champ résumé et non pas d’un "résumé" de mon article qu’il y aurait du début du contenu.

                Car par défaut, j’ai remarqué que ditto affiche ce qu’il y a dans le champ résumé lorsqu’il est rempli, et, si il ne l’est pas affiche le contenu.

                Or, ce "tronquage" marche très bien lorsqu’il s’applique sur le champ contenu, mais ne s’applique pas sur le champ résumé....

                J’imagine que les personnes qui ont créer ditto ont considéré que le résumé devait être rédigé à la longueur souhaité par le rédacteur et que au cas ou il n’y en ai pas, tronquer le champ contenu pour afficher quand même quelque chose....

                Apparement, à moins de modifier le code PHP (et je ne connais pas encore assez MoDx et ditto pour pouvoir le faire sans risquer des conséquences dramatiques ^^) ditto n’applique pas les trunc au champ résumé.
                  • 23050
                  • 1,842 Posts
                  Tu as tout compris ! Je n’avais pas compris que tu voulais couper le résumé. :/

                  Je ne sais plus où j’ai lu ça mais effectivement, Ditto affiche en priorité le résumé (qu’il ne tronque pas malgré les paramètres que tu as définis) puis le contenu (tronquié si spécifié dans l’appel de Ditto).

                  Donc, à l’heure actuelle, sans une modification du code, tu ne pourras pas faire ce que tu souhaites sad
                    • 11975
                    • 2,542 Posts
                    Pour ce qui est de modifier le code de ditto, tu n’as rien à craindre.
                    Les fonctions de troncature sont isolés dans une classe spécifique.
                    Donc au pire si tu abimes qqchose cela n’affectera ditto que lorsque ces fonctions sont invoquées.

                    Si tu as des compétences en la matière je t’encourage vivement à le faire.
                    En cas de succès c’est la communauté toute entière qui en profitera.

                    :-)
                      Made with MODx : [url=http://www.copadel.com]copadel, fruits et l
                      • 11975
                      • 2,542 Posts
                      d’aprés le code (truncature.class.inc.php

                      function execute(&$resource, $trunc, $splitter, $linktext, $truncLen, $truncOffset, $truncsplit, $commentschunk, $truncChars) {
                      		$summary = '';
                      		$this->link = '';
                      		$closeTags = true;
                      		// summary is turned off
                      		if ($trunc == false) {
                      			$summary = $resource['content'];
                      			$this->summaryType = "content";
                      			$closeTags = false;
                      			// contains the splitter and use splitter is on
                      		} else
                      			if ((strstr($resource['content'], $splitter)) && $truncsplit) {
                      				$summary = array ();
                      
                      				// HTMLarea/XINHA encloses it in paragraph's
                      				$summary = explode('<p>' . $splitter . '</p>', $resource['content']);
                      
                      				// For TinyMCE or if it isn't wrapped inside paragraph tags
                      				$summary = explode($splitter, $summary['0']);
                      
                      				$summary = $summary['0'];
                      				$this->link = '<a href="[~' . $resource['id'] . '~]">' . $linktext . '</a>';
                      				$this->summaryType = "content";
                      				
                      				// fall back to the summary text
                      			} else
                      				if (strlen($resource['introtext']) > 0) {
                      					$summary = $resource['introtext'];
                      					$this->link = '<a href="[~' . $resource['id'] . '~]">' . $linktext . '</a>';
                      					$this->summaryType = "introtext";
                      					$closeTags = false;
                      					// fall back to the summary text count of characters
                      				} else
                      					if (strlen($resource['content']) > $truncLen) {
                      						$summary = $this->html_substr($resource['content'], $truncLen, $truncOffset, $truncChars);
                      						$this->link = '<a href="[~' . $resource['id'] . '~]">' . $linktext . '</a>';
                      						$this->summaryType = "content";
                      						// and back to where we started if all else fails (short post)
                      					} else {
                      						$summary = $resource['content'];
                      						$this->summaryType = "content";
                      						$this->link = '   ';
                      					}
                      
                      		// Post-processing to clean up summaries
                      		$summary = ($closeTags === true) ? $this->closeTags($summary) : $summary;
                      		$summary = str_replace($commentschunk, "", $summary);
                      		return $summary;
                      	}
                      


                      Si trunc = 1
                      Ditto recherche d’abord la présence du splitter dans la valeur du champ "content"
                      Si il est absent il bascule sur "introtext"
                      Si "introtext" est vide
                      alors il se tourne vers "content"

                      :-)
                        Made with MODx : [url=http://www.copadel.com]copadel, fruits et l