Je lisais Stratégie de contenu mobile de Karen McGrane quand le point suivant m’arrêta tandis que je courais comme un chien fou à travers la lande [1] :
Le site Blockbuster […] se contente de tronquer le texte de manière totalement arbitraire […]. Il est frustrant pour l’utilisateur de ne pas pouvoir lire le résumé entier […].
[Chez Netflix,] chaque plate-forme peut choisir quel résumé afficher, et celui-ci n’est pas tronqué.
Dans Spip on peut utiliser un champ Descriptif qui permet, comme son nom l’indique, de faire figurer une description de l’article dans une liste d’articles (par exemple sur la page d’accueil). Ensuite pour l’afficher, il suffit de solliciter la balise #DESCRIPTIF
(logique). Mais j’ai voulu faire le malin et toujours mettre un extrait au cas où je ne remplirais pas le descriptif. Voilà donc le code simplifié de mes squelettes actuels :
[(#DESCRIPTIF|? {[(#DESCRIPTIF|paragrapher)], [(#INTRODUCTION|couper{200}|propre|paragrapher)]} )]
Autrement dit :
- Le champ Descriptif est-il rempli ?
- Si oui : l’afficher ;
- Si non : afficher l’introduction, la couper à 200 caractères [2].
L’introduction, c’est un mécanisme automatique de Spip qui affiche la description si elle existe, sinon extrait du corps de l’article les n premiers caractères (ici 200, par défaut 600). Poussé par la remarque de Karen McGrane, et fatigué d’écrire à chaque fois un descriptif, je décide de ne plus laisser Spip couper arbitrairement les introductions en plein milieu d’une phrase : il va donc falloir aller dans le code, le comprendre, et décider autre chose (par exemple couper après le premier point).
Je cherche donc dans le code de Spip l’endroit où apparaît « balise_INTRODUCTION
», et je trouve balise_INTRODUCTION_dist
dans ecrire/public/balises.php
. Je potasse la fonction et découvre qu’elle appelle un filtre « introduction
» via chercher_filtre('introduction')
.
Je cherche donc cette fois « filtre_introduction
», que je trouve en tant que filtre_introduction_dist
dans ecrire/public/composer.php
. On se rapproche du but, on se rapproche du but !
Et là, surprise, voilà le code que je lis :
// De preference ce qui est marque <intro>...</intro> $intro = ''; $texte = preg_replace(",(</?)intro>,i", "\\1intro>", $texte); // minuscules […]
Mais alors, se pourrait-il qu’il suffise de mettre une petite balise intro
dans le corps de mon article pour que tout soit résolu sans avoir besoin de bricoler comme un sagouin ? Je fais le test, et effectivement, ça fonctionne.
Me voilà alors à creuser un peu partout, et je découvre (comparativement assez vite par rapport à mes recherches) que c’est écrit dans la doc :
L’introduction est prise dans le descriptif s’il est renseigné, sinon elle est calculée depuis le texte : à ce moment là, l’introduction est prise dans le contenu entre les balises
<intro>
et</intro>
si présentes, sinon en coupant le texte à la taille indiquée.
Ah bin voilà. Je vais ensuite lire la documentation de #INTRODUCTION
qui me le confirme [3].
Moralité : de morceau de code en morceau de code, j’ai fini par lire la documentation, et réappris à mes dépends qu’il vaut mieux toujours commencer par là. Rangez vos cartables, sortez dans l’ordre, et n’oubliez pas : RTFM [4].