SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 321 visiteurs en ce moment

Accueil > Navigation > Navigation transversale > Articles connexes par pertinence > Articles connexes, par pertinences, avec mots

Articles connexes, par pertinences, avec {mots}

25 juillet 2013 – par Maïeul – commentaires

8 votes

Ceci est une « contribution pédagogique », qui montre par l’exemple comment développer une nouvelle fonctionnalité pour SPIP.

Cet article est une mise à jour de Afficher les articles connexes, triés par pertinence, en proposant d’utiliser les nouveaux outils de SPIP, et notamment la version 2.1 (sous SPIP 3) ou 1.3 (sous SPIP 2 et 2.1) du plugin Critère mots.

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 Critère mots.

Commençons par remplir un tableau #GET avec la liste des mots-clefs associés à l’article courant.

  1. #SET{mots,#ARRAY}
  2. <BOUCLE_mot(MOTS){id_article}>
  3. #SET{mots,#GET{mots}|push{#ID_MOT}}
  4. </BOUCLE_mot>

Télécharger

On consultera la documentation de #ARRAY pour plus de détails.

Créons maintenant la boucle des articles connexes :

  1. <B_connexes>
  2. Articles connexes :
  3. <ul>
  4. <BOUCLE_connexes(ARTICLES){id_article!=#ID_ARTICLE}{mots 1 #GET{mots} !tri}{0,5}>
  5. <li>#TITRE</li>
  6. </BOUCLE_connexes>
  7. </ul>
  8. </B_connexes>

Télécharger

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).
  • {0,5} : nous limitons à 5 articles connexes seulement.

Et voilà !

Dernière modification de cette page le 25 juillet 2013

Retour en haut de la page

Vos commentaires

  • Le 26 juillet 2013 à 11:56, par Thiébaut En réponse à : Articles connexes, par pertinences, avec {mots}

    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 :

    1. [(#REM) Auteurs connexes ]
    2. #SET{mots,#ARRAY}
    3. <BOUCLE_motsconnexes(MOTS){id_auteur}>
    4. #SET{mots,#GET{mots}|push{#ID_MOT}}
    5. </BOUCLE_motsconnexes>
    6. <B_auteursconnexes>
    7. <div class="menu">
    8. <h2>Auteurs connexes</h2>
    9. <ul>
    10. <BOUCLE_auteursconnexes(AUTEURS){id_auteur!=#ID_AUTEUR}{mots 1 #GET{mots}!tri}{0,10}>
    11. <li><a href="#URL_ARTICLE">#TITRE</a></li>
    12. </BOUCLE_auteursconnexes>
    13. </ul>
    14. </div>
    15. </B_auteursconnexes>
    16. </code>

    Télécharger

    Aurais-je fait une erreur dans mes boucles ?

    Répondre à ce message

  • Le 26 juillet 2013 à 12:10, par Thiébaut En réponse à : Articles connexes, par pertinences, avec {mots}

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

    1. [(#REM) Auteurs dont les articles sont connexes ]
    2. #SET{mots,#ARRAY}
    3. <BOUCLE_articlesauteur(ARTICLES){id_auteur}>
    4. <BOUCLE_motsconnexes(MOTS){id_article}>
    5. #SET{mots,#GET{mots}|push{#ID_MOT}}
    6. </BOUCLE_motsconnexes>
    7. </BOUCLE_articlesauteur>
    8. <BOUCLE_articlesconnexes(ARTICLES){id_article!=#ID_ARTICLE}{mots 1 #GET{mots}!tri}>
    9. <BOUCLE_auteurconnexes(AUTEURS){id_article}{doublons auteurs}></BOUCLE_auteurconnexes>
    10. </BOUCLE_articlesconnexes>
    11. <B_tt_auteurconnexes>
    12. <div class="menu">
    13. <h2>Auteurs dont les articles sont connexes</h2>
    14. <ul>
    15. <BOUCLE_tt_auteurconnexes(AUTEURS){!doublons auteurs}{par nom}>
    16. <li><a href="#URL_AUTEUR" [ class="(#EXPOSE)"]>#NOM</a></li>
    17. </BOUCLE_tt_auteurconnexes>
    18. </ul>
    19. </div>
    20. </B_tt_auteurconnexes>

    Télécharger

    Il y a sûrement des trucs à revoir, mais ça a l’air de fonctionner...

    • Le 26 juillet 2013 à 12:22, par Thiébaut En réponse à : Articles connexes, par pertinences, avec {mots}

      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.

    • Le 26 juillet 2013 à 12:42, par Thiébaut En réponse à : Articles connexes, par pertinences, avec {mots}

      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)

      1. [(#REM) Auteurs dont les articles sont connexes ]
      2. #SET{mots,#ARRAY}
      3. <BOUCLE_articlesauteur(ARTICLES){id_auteur}>
      4. <BOUCLE_motsconnexes(MOTS){id_article}>
      5. #SET{mots,#GET{mots}|push{#ID_MOT}}
      6. </BOUCLE_motsconnexes>
      7. </BOUCLE_articlesauteur>
      8. <BOUCLE_articlesconnexes(ARTICLES){mots 1 #GET{mots}!tri}>
      9. <BOUCLE_auteurconnexes(AUTEURS){!id_auteur=#ID_AUTEUR}{id_article}{doublons auteurs}></BOUCLE_auteurconnexes>
      10. </BOUCLE_articlesconnexes>
      11. <B_tt_auteurconnexes>
      12. <div class="menu">
      13. #ANCRE_PAGINATION
      14. <h2><:auteursconnexes:></h2>
      15. <ul>
      16. <BOUCLE_tt_auteurconnexes(AUTEURS){!doublons auteurs}{!doublons auteurs}{par nom}{pagination 10}>
      17. <li><a href="#URL_AUTEUR" [ class="(#EXPOSE)"]>#NOM</a></li>
      18. </BOUCLE_tt_auteurconnexes>
      19. </ul>
      20. [<p class="pagination">(#PAGINATION)</p>]
      21. </div>
      22. </B_tt_auteurconnexes>

      Télécharger

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Le plugin ZotSpip

    28 mai 2012 – 136 commentaires

    Synchronise Spip avec une bibliothèque (personnelle ou partagée) de références bibliographiques Zotero. Utilisez Zotero pour gérer / importer / rédiger vos références bibliographiques, puis incorporez vos références bibliographiques dans votre Spip avec (...)

  • Newsletters

    16 janvier 2013 – 410 commentaires

    Ce plugin permet de composer des Info-lettres. Par info-lettre, on désigne ici le contenu éditorial qui va être composé et envoyé par courriel à une liste d’inscrits. Le plugin permet de composer une info-lettre à partir d’un modèle pré-composé, (...)

  • Les contributions pour un nouveau logo

    25 juin 2015 – 23 commentaires

    Une synthèse des propositions de logo pour SPIP. A. Le travail initial de Sébastien http://notes.desbenoit.net/Un-nouveau-logo-pour-Spip-les B. Une proposition de Casp http://www.cas-p.net/Essai-de-logo-SPIP C. Une variante de (...)

  • SPIP chez « Free.fr »

    10 avril – commentaires

    Spip sur free.fr c’est possible, mais compte-tenu des configurations serveurs très « serrées » (et du fait que tous les serveurs ne sont pas identiques semble-t-il), c’est à vos risques et périls que vous vous lancerez dans l’aventure. N’oubliez pas, par (...)

  • bigfoot

    16 juin 2015 – 70 commentaires

    Un plugin qui facilite l’utilisation des notes de bas de page en les affichant dans des infobulles à l’aide d’un peu de javascript. Le constat de l’auteur du script : Les notes de bas de page sur le web sont une plaie. Tu dois d’abord essayer de (...)