Problèmatique
Le problème est simple : trouver les articles ayant des mots-clef communs avec l’article de la page courante, en les triant en fonction du nombre de mots-clef communs.
Exemple
- L’article de la page courante est associé aux mots 2,3,4.
- L’article x est associé aux mots 3,4
- L’article y est associé aux mots 1,4.
Nous souhaitons afficher les articles x et y, triés dans cet ordre, car :
- x a deux mots-clef communs avec l’article principal.
- y a un mot-clef commun avec l’article principal.
Mise en œuvre
Contrairement au précédent article, pas de PHP à manipuler. En revanche, on utilisera le plugin Plugin “Critère mots
”.
Commençons par remplir un tableau #GET
avec la liste des mots-clefs associés à l’article courant.
#SET{mots,#ARRAY}
<BOUCLE_mot(MOTS){id_article}>
#SET{mots,#GET{mots}|push{#ID_MOT}}
</BOUCLE_mot>
On consultera la documentation de #ARRAY
pour plus de détails.
Créons maintenant la boucle des articles connexes :
<B_connexes>
Articles connexes :
<ul>
<BOUCLE_connexes(ARTICLES){id_article!=#ID_ARTICLE}{mots 1 #GET{mots} !tri}{0,5}>
<li>#TITRE</li>
</BOUCLE_connexes>
</ul>
</B_connexes>
Commentaire des différents critères :
-
{id_article!=#ID_ARTICLE}
: nous ne voulons pas reprendre l’article principal. -
{mots 1 #GET{mots} !tri}
: nous souhaitons :- récupérer les articles avec au moins 1 mot dans le tableau
#GET{mots}
, - trier en fonction du nombre de mots qui :
- sont associés à chaque article ;
- sont présents dans
#GET{mots}
.
- en mettant d’abord les articles avec le plus de mots associés (
!tri
).
- récupérer les articles avec au moins 1 mot dans le tableau
-
{0,5}
: nous limitons à 5 articles connexes seulement.
Et voilà !
Discussions by date of activity
2 discussions
Sur SPIP 3.0.10, la version 2.1 du plugin fonctionne très bien pour les articles. Cela exige bien-sûr une gestion des mots-clés méthodique, mais du coup, on peut se passer du système de rubrique avec une pertinence accrue.
Par contre, je n’ai pas réussi à l’utiliser pour lister tous les auteurs connexes dans la page auteur. Pour le test, j’ai associé un mot-clé commun à deux auteurs (dont celui de la page test) et j’ai adapté la boucle comme ceci :
Aurais-je fait une erreur dans mes boucles ?
il y avait deux bugs au niveau du plugin:
- 1 lié au fait que les auteurs peuvent eux même être reliés à des objets, ce qui donnait une clause ambiguë dans le requête sql (http://zone.spip.org/trac/spip-zone/changeset/74474).
- 1 lié au fait que je conditionnais le calcul de la boucle à la présence d’au moins 2 éléments dans le tableau, et non pas d’1 élèment (http://zone.spip.org/trac/spip-zone/changeset/74476).
La version 2.1.3 devrait résoudre ce pb. Le zip sera normalement prêt d’ici 13h10, et a priori à 18h et quelques via le chargeur auto de SPIP.
par ailleurs :
- tu devrais (pour plus de lisibilité) mettre une espace avant le !
- il faut corriger la ligne 11 :
<a href="#URL_AUTEUR">#NOM</a>
.Merci, j’attends la nouvelle version pour le retour !
Tout est arrangé, bravo ! J’ai même réussi à faire une boucle d’images connexes. Ce plugin permet vraiment d’exploiter au mieux les mots-clés. Merci !
Reply to this message
Je reposte, toujours concernant l’utilisation des mots connexes dans la page auteur... mais pour proposer une boucle avec anti-doublons que je viens de tester avec succès.
Cette fois-ci, à défaut de réussir à afficher les autres auteurs par mots connexes d’auteur, on affichera les autres auteurs par mots connexes d’articles. On reprendra donc dans un tableau tous les mots-clés associé aux articles de notre auteur test, puis on cherchera tous les articles du site qui ont les mêmes mots-clé et on affichera leurs auteurs (l’anti-doublon n’est là que pour pouvoir trier la liste obtenue comme on veut).
Il y a sûrement des trucs à revoir, mais ça a l’air de fonctionner...
Ligne 8, le
{id_article!=#ID_ARTICLE}
est un oubli de copié-collé. Il ne sert strictement à rien dans ce cas ! Mais il n’empêche pas la boucle de fonctionner.Par contre, ligne 9 (Boucle des auteurs connexes) on peut ajouter un
{!id_auteur=#ID_AUTEUR}
pour éviter d’afficher l’auteur de la page en cours, ce qui au final donne (avec l’ancre pagination)Reply to this message
Add a comment
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Follow the comments:
|
