1

Le plugin « Lire aussi... »

22 juin 2008
par ARNO*

[SPIP 2.0] Certains sites ont besoin de lier ponctuellement des articles par petits groupes, de façon à pouvoir présenter des liens de type « Lire aussi... » entre ces articles.

On trouve cela désormais de manière systématique sur les sites des quotidiens. Par exemple, dans une page de rubrique du Guardian, on trouve ceci :

L’article principal est complété ici par deux « petits » articles qui lui sont liés.

Sur Libération, cela donnera par exemple :

Bien sûr, dans SPIP, on peut réaliser cela en regroupant ces articles dans une rubrique. D’accord, mais on peut très bien imaginer que ces articles n’ont pas vocation, malgré leur thème commun, à se trouver dans la même rubrique (par exemple un site structuré non selon les sujets, mais selon les contributeurs ou les types de médias). Dans ce cas, difficile de créer de tels liens.

La solution qui ne convient absolument pas, ici, consiste à créer un mot-clé pour ce petit groupe d’articles. Au niveau de la gestion du site, cela donne (j’en ai déjà vu malheureusement) des sites dotés de quelques centaines de mots-clés dont l’usage est systématiquement ponctuel. Rapidement ingérable. J’ai donc réalisé ce plugin qui permet de créer des liens entre plusieurs articles (un peu sur le modèle des liens de traduction, d’ailleurs) : c’est le plugin « Lire aussi ».

Le plugin « Lire aussi... »
Télécharger (4.9 ko)

Une fois installé et activé, le plugin ne nécessite aucune configuration ; en revanche, il faut modifier ses squelettes pour afficher ces nouvelles relations entre articles. Il devient immédiatement actif en ajoutant un pavé dans les pages d’articles :

Zoomons sur ce bloc :

Ici, j’entre le numéro d’un autre article, et je valide. Je réalise si nécessaire cette opération plusieurs fois, de façon à lier d’autres articles. J’obtiens ceci :

Dans la liste, il y a deux options pour chaque entrée :
• en colonne de gauche, les petites icônes permettent de changer l’« article de référence » (comme pour les liens de traduction) ; l’article de référence est l’article principal du groupe d’articles, destiné à servir de point d’entrée ;
• en colonne de droite, la petite croix rouge pour retirer un élément de la liste.

Notez que l’interface est en AJAX et ne provoque pas de rechargement de la page lorsqu’on ajoute ou supprime des articles liés.

N’utilisez pas ce plugin

En règle générale, je conseille d’utiliser le moins de plugins possibles. Je déconseille particulièrement d’utiliser celui-ci. C’est typiquement le genre de plugin qui vous transforme un site en usine à gaz ingérable si les administrateurs ne sont pas extrêmement rigoureux.

Commencez par voir s’il n’est pas possible de réaliser ces groupes d’articles plus simplement : en croisant des mots-clés thématiques, ou en concevant la structure avec des sous-rubriques pertinentes. Dans 90% des cas, je suis certain que cela suffit largement.

Dans les 10% qui restent, commencez par essayer de vous convaincre que, de toute façon, vous n’avez pas besoin d’une telle fonctionnalité.

Les boucles

Le principe est similaire aux liens de traduction. Si un article appartient à un groupe d’articles, alors tous ces articles partagent un même champ id_lire, égal à l’id_article de l’article principal. Un article qui n’appartient pas à un groupe d’articles a simplement un id_lire de 0.

Voici comment simplement afficher les articles en « lire aussi » :

  1. <BOUCLE_principale(ARTICLES){id_article}>
  2.  
  3.         <B_lire_aussi>
  4.                 <ul>
  5.         <BOUCLE_lire_aussi(ARTICLES){id_lire=#ID_LIRE}{id_lire > 0}>
  6.                 <li><a href="#URL_ARTICLE">#TITRE</a></li>
  7.         </BOUCLE_lire_aussi>
  8.                 </ul>
  9.         </B_lire_aussi>
  10.  
  11. <h1>#TITRE</h1>
  12. #TEXTE
  13. </BOUCLE_principale>

Télécharger

C’est tout simple. Pour ne pas afficher l’article en cours, ou pour l’afficher sans lien, ce sont les critères habituels de ce genre de boucle, je vous laisse faire.

Voici maintenant une façon de présenter la liste des articles des rubriques, en n’affichant que les articles qui sont les principaux articles de leur groupe, ou alors qui n’appartiennent pas un groupe.

  1. <BOUCLE_principale(RUBRIQUES){id_rubrique}>
  2. <h1>#TITRE</h1>
  3.  
  4.         <BOUCLE_articles(ARTICLES){id_rubrique}{par num titre}>
  5.                 <BOUCLE_test_lire(ARTICLES){id_article}{id_lire==^(0|#ID_ARTICLE)$}>
  6.                         <div><b>#ID_ARTICLE.</b> #TITRE (#ID_LIRE)</div>
  7.                        
  8.                         <B_lire_aussi>
  9.                         <ul>
  10.                         <BOUCLE_lire_aussi(ARTICLES){id_lire > 0}{id_lire=#ID_LIRE}{par num titre}{exclus}>
  11.                         <li><b>#ID_ARTICLE.</b> #TITRE (#ID_LIRE)</li>
  12.                         </BOUCLE_lire_aussi>
  13.                         </ul>
  14.                         </B_lire_aussi>
  15.                 </BOUCLE_test_lire>
  16.         </BOUCLE_articles>
  17. </BOUCLE_principale>

Télécharger

Qui êtes-vous ?
Votre message

Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.