Jusqu’à maintenant, écourter certains textes dans l’affichage des billets de Dotclear, se faisait en utilisant le code suivant (extrait tiré du fichier entry_short.html du jeu de template currywurst) :
<p>
{{tpl:EntryContent encode_html="1" remove_html="1" cut_string="300"}}
<tpl:EntryIfContentCut encode_html="1" remove_html="1" cut_string="300">
<span class="ellipsis"> […]</span>
</tpl:EntryIfContentCut>
</p>
Et ça donnait quelque chose comme ça :
Pour peu que le billet ne comporta pas d’extrait, uniquement un contenu, ce dernier est déshabillé des balises HTML et on coupe brutalement au 300e caractère, tel que précisé dans la balise tpl:EntryContent …. Une balise supplémentaire se charge ensuite de déterminer si le contenu à été coupé et dans ce cas ajoute trois points de suspension entre crochets.
J’avoue que ça fait quelques temps que ça me titille de faire un peu mieux et j’ai déniché une petite fonction un peu plus intelligente (Alan Whipple en est l’auteur), capable de conserver des balises HTML en les refermant au besoin dans l’extrait rendu et d’ajouter à la fin les trois points de suspension si le texte a été découpé.
Du coup j’en ai fait un petit plugin, qui attendait que les filtres puissent être étendus — ce que vient de commiter JcDenis ce matin — pour pouvoir fonctionner.
Le code dans le template se simplifie puisqu’à la place du précédent (voir en début de billet) on a maintenant :
<p>
{{tpl:EntryContent graceful_cut="300"}}
</p>
Et ça donne cela :
Ce qui est un peu mieux et qui permet de conserver, entre autre, les liens ou les images qui existaient au début du contenu.
J’ai même prévu, mais ce n’est pas encore opérationnel, de faire en sorte que gracefulCut s’occupe de la découpe à la place de la fonction d’origine de Dotclear, ce qui permettra de ne pas modifier les templates, au bémol près que les attributs remove_html="1" et encode_html="1" empêcheront la conservation des liens et des images.
PS : En réfléchissant au fait que l’usage de cet attribut, graceful_cut, dans les thèmes distribués, impliquerait que le plugin soit installé. Il va falloir s’occuper de la gestion de dépendances de plugins pour les thèmes (c’est déjà actif pour les plugins entre eux, même si vous ne l’avez pas encore remarqué).
1 De Tomek -
Question bête : on ne peut pas l’intégrer dans la distribution ? Vu que c’est vachement plus joli.
2 De i_love-dc -
+1 avec Tomek pour une intégration directe dans la distrib ;-)
En attendant, ou peut on tester/télécharger le plugin en question?
3 De Franck -
Tomek ça me gêne un peu de lâcher dans la distribution un code qui n’a pas été un peu testé au préalable, je préfère le conserver en plugin pour l’instant, on verra si il est beaucoup installé et utilisé ensuite.
i-love-dc pas pour l’instant, d’ailleurs il ne fonctionnerait pas avec l’actuelle 2.10
4 De Tomek -
OK, je comprends. Mais rien n’empêche de le faire d’ici une version ou deux, donc (comme pour simple menu & breadcrumb par exemple).
5 De Franck -
Oui tout à fait, si ça fonctionne bien on l’intégrera — juste comme un attribut supplémentaire graceful_cut et on mettra à niveaux les jeux de template et les thèmes qui utilisent cut_string — pour la 2.12 par exemple.
Il faudra quoi qu’il en soit faire attention, cut_string ne peut pas être remplacé tel quel partout, essentiellement dans du contenu, alors qu’il est utilisé ailleurs — c’est un peu une note pour moi-même plus tard, ça !
6 De Pablo -
Question de newbie un peu hors-sujet, je crois : pourquoi certains thèmes (Ductile) ignorent en première page du blog les éventuels extraits et n’écourtent aucun billet ? (mais par contre en écourtent tous dès la 2è page, ce qui me paraît plus logique). Est-ce un choix à la conception du thème ? Merci !
7 De Franck -
Oui Pablo c’est un choix délibéré au niveau du thème. Parfois, certains thèmes (comme Ductile), comportent un configurateur qui permet de choisir ce genre de comportement. Sinon ça se fait au niveau des fichiers template du thème s’il en comporte, sinon en suivant ce qui a été décidé au niveau du jeu de template sur lequel le thème s’appuie.
J’espère ne pas avoir été trop technique :-)
8 De Pablo -
C’est parfaitement clair, merci Franck ! Ah, oui, c’est vrai, j’oublie toujours le configurateur !! (et que c’est moi qui ai choisi les options d’affichage — sauf que j’y aurais ajouté : “extrait s’il en existe, sinon complet” ;-) ;-) ). Je sais qu’on peut toujours essayer de modifier ces fichiers-là, mais j’y vois en général plus de risques pour moi que d’avantages, donc j’assume volontiers les choix des concepteurs :-)
(J’ai mis sur mon nom le lien du site de mon club d’athlé, qu’on a fait migrer en février dernier vers Dotclear et que j‘“administre” avec fierté, avec l’aide précieuse (dans les deux cas : et pour la migration et pour l’administration) de Noé )
9 De David Larlet -
De manière assez ironique, la découpe du chapo de ce billet en page d’accueil n’est pas optimale ;-)
10 De Franck -
c’est tout à fait exact, pour la bonne raison que ce blog tourne avec la version 2.10 de Dotclear qui n’emporte pas ce qu’il faut pour faire tourner le plugin en question.
Mais ça va venir :-)