LE PLUGIN «LIRE AUSSI...»
LE PLUGIN «LIRE AUSSI...»
Techniques SPIP

Vous trouverez ici des trucs et astuces destinés aux développeurs de sites sous SPIP.

La majorité de ces trucs est consacrée aux filtres graphiques introduits dans SPIP 1.9. Il y a là en effet un vaste champ d’expérimentation pour les webmestres et les graphistes.

Chaque truc est suivi d’un forum auquel nous vous invitons à participer.

N.B. La présence de ces trucs et astuces sur notre site professionnel est destinée à faire connaître notre activité de création de sites sous SPIP. Vous pouvez librement utiliser les morceaux de code fournis ici dans vos propres squelettes. Vous pouvez reprendre ces exemples sur votre site ou dans les forums d’un autre site ; dans ce cas, nous vous demandons simplement d’avoir la courtoisie de référencer la page d’où est tiré le code repris.

XML

[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 ».

Zip - 4.9 ko
Le plugin « Lire aussi... »

Attention : ce plugin ne fonctionne que sur l’actuelle version en développement de SPIP, accessible par SVN.

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>

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>
il y a 2 mois
Le plugin « Lire aussi... »

Effectivement l’un des problèmes de ce plugin c’est qu’il rajoute un type de relation à ceux déjà existant (rubriques, mots-clefs, traductions). Au lieu de chercher à centraliser.

il y a 2 mois
Le plugin « Lire aussi... »
ARNO* (arno chez rezo.net)

Au lieu de chercher à centraliser.

Oui, mais d’un autre côté, c’est bien à cela que servent les plugins. Dans le cas où la solution générique ne répond pas aux besoins d’un site, pourquoi se priver de développer l’outil adapté ?

À mon avis, la difficulté ensuite, c’est que tout le monde s’imagine avoir besoin d’un « outil adapté » spécifiquement à ses besoins (aux débuts de SPIP, la plupart des gens prétendaient qu’il était impossible de réaliser « leur » site avec un tel outil, parce que leurs besoins à eux étaient tellement particuliers). Ce qui est en général faux : la plupart des sites ont des besoins très basiques et génériques, c’est seulement l’ergonomie et la structuration de l’information qui ont changent, la plupart du temps il n’est pas nécessaire de modifier le type de relation.

Mais d’un autre côté, il y a effectivement des cas où l’on a besoin de bidouilles spécifiquement adaptées. Et ce plugin en fait partie. Inutile dans 90% des cas, mais vraiment super-pratique quand vraiment on en a besoin.

Par ailleurs, pour les « lire aussi... », je préfère largement les croisements de mots-clés : afficher les articles qui partagent le plus de mots-clés (par exemple). Mais c’est un usage tout de même différent. Que ce soit une bonne idée ou non, il y a tout de même un certain nombre de cas où le webmestre veut gérer à la main certaines relations, plutôt que de se reposer sur des automatismes (dans 30% des cas, c’est une bonne idée).

il y a 2 mois
Le plugin « Lire aussi... »
balluche (balluche chez free.fr)

bonjour,

J’ai eu ce genre de problématique à gérer sur mon site : lier des articles entre eux par forcément sur la même rubrique. Je m’en suis sorti en créant un groupe de mots clés pour associer un article au numéro d’un autre article. Une boucle permet ensuite de les trier dans l’ordre de date. J’ai jamais publié cette astuce. L’inconvénient est bien sûr que le groupe se remplit rapidement de numéros. Du coup, je note ta solution, le jour où je mettrais à niveau mon spip ... :-(

Voir ici comment çà fonctionne (à la fin de la page).

<B_articles_lies>
Pages
<BOUCLE_articles_lies(MOTS) {id_article}{id_groupe=8}{0,1}>
<BOUCLE_articles_lies2(ARTICLES) {id_groupe=8}{id_mot}{par date}{" | "}>
[<(#EXPOSE{span,a href="#URL_ARTICLE"})>]
#COMPTEUR_BOUCLE
[</(#EXPOSE{span,a})>]
</BOUCLE_articles_lies2>
</BOUCLE_articles_lies>
<br /><br />
</B_articles_lies>
il y a 2 mois
Le plugin « Lire aussi... »
ARNO* (arno chez rezo.net)

Salut Balluche,

en créant un groupe de mots clés pour associer un article au numéro d’un autre article.

Je parle de cette solution, justement. Elle est viable sur un site publiant peu. Sur un site, genre site de quotidien, on se retrouve à créer un mot clé à chaque fois, et si on publie, disons, 3 dossiers par jour, on se retrouve avec 1000 mots clés au bout d’un an. Mots clés destinés à ne pas être réutilisés. Et là, c’est carrément impraticable.

Il y aussi le problème des droits de création des mots-clés par des rédacteurs.

Par ailleurs, pour le coup, au niveau interface, on fait du très lourd pour un usage systématiquement ponctuel (puisque le mot clé est destiné à n’avoir que 2 à 5 articles, dans la logique d’un « lire aussi... » manuel).

il y a 2 mois
Le plugin « Lire aussi... »
ikou (juytter chez ikou.info)

Par ailleurs, pour les « lire aussi... », je préfère largement les croisements de mots-clés : afficher les articles qui partagent le plus de mots-clés (par exemple).

Moi aussi c’est "un peu" l’intérêt d’un cms et du logiciel. J’ajouterais un tri par date pour un site d’actualité. Mais le problème pour le "designer spip" c’est que je suppose qu’il faut soit écrire une succession de boucles spip et on obtient une usine à gaz incompréhensible, soit simplifier avec du php et du coup l’abstraction et l’intérêt du langage spip passe à la trappe, soit un mélange des deux pour que ça reste à peu près compréhensible. J’ai l’impression que le langage spip et sa simplicité d’usage est un peu laissé de côté au profit de plug-ins pour répondre à des fonctionnalités précises. non ?

il y a 2 mois
Le plugin « Lire aussi... »
ARNO* (arno chez rezo.net)

J’ai l’impression que le langage spip et sa simplicité d’usage est un peu laissé de côté au profit de plug-ins pour répondre à des fonctionnalités précises. non ?

Je ne crois pas. Les copains continuent à affiner les critères de boucles, il y a une foultitude de jolies choses, déjà dans la 1.9, vraiment pratiques et d’usage générique. La courbe d’apprentissage est toujours bien présente de ce côté : si tu veux améliorer tes squelettes sans PHP, il y a vraiment des choses très pratiques. Tiens, récemment je me suis mis à utiliser beaucoup plus fréquemment les critères de dates (même jour, même mois...) ; ce ne sont certainement pas les critères les plus connus, mais ils permettent des choses très pratiques là où, auparavant, on bidouillait du PHP.

Ensuite, oui, une bonne partie de l’intérêt des plugins est bien de développer des fonctionnalités spécifiques, d’usage moins général (ou carrément ultra-spécifique) que le core. Je pense qu’on verra des plugins allant dans deux directions : des plugins à vocation très générique, et des plugins permettant de traiter des situations très spécifiques.

il y a 2 mois
Le plugin « Lire aussi... »
Loiseau2nuit (l.oiseau2nuit chez gmail.com)

Ouais ca, ça me plait ! Bravo ! :-D

Par contre, mon site n’est pas en version dev (il est destiné à la production quand même un jour et une version dev en ce cas me plait moyennement, eut égard aux soucis que l’on peut rencontrer avec une version "non stable")

Est-ce que ton plugin est portable facilement en version 1.9.2d ?

Merci encore ;-)

il y a 2 mois
Le plugin « Lire aussi... »
Said (bladinet chez gmail.com)

Merci infiniment pour ce plugin... Des petites choses qui nous facilitent la vie

il y a 2 semaines
Le plugin « Lire aussi... »
Patrick Bouchaud (pbouchaud chez gmail.com)

Enfin la solution a mon probleme, consistant a lier des articles appartenant a des rubriques gerees par des departements differents (Produits vs. Projets vs. HR...) (j’appartiens donc apparemment aux 10% des necessiteux) ! Ne [me ?] reste plus qu’a remplacer l’interface de saisie de l’article "lire aussi" par le navigateur des rubriques spip... En tous cas c’est super - merci infiniment !!

il y a 5 jours
Le plugin « Lire aussi... »
Said (spipole chez gmail.com)

Bonjour

Merci pour le plugin. Je l’utilise et c’est ce qu’il fallait. Mon seul regret est que pour faire des liens entre articles, il faut ouvrir une 2è page , faire une recherche et copier - coller les articles.

ça prend du temps alors qu’il y aurait possibilité d’accélérer la procédure.

En tout cas, c’est juste une suggestion.

Merci en tout cas

Votre message :
Un message, un commentaire ?

(Pour créer des paragraphes, laissez simplement des lignes vides.)

Qui êtes-vous ? (optionnel)