Découpe intelligente

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 :

Extrait court de billet dans la 2.10

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 :

Extrait court de billet dans la 2.11 avec le plugin gracefulCut

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é).

Ajouter un commentaire

Les champs suivis d'un * sont obligatoires

Les commentaires peuvent être formatés en utilisant la syntaxe Markdown Extra.

Ajouter un rétrolien

URL de rétrolien : https://open-time.net/trackback/13110

Haut de page