SPIP-Contrib

SPIP-Contrib

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

288 Plugins, 197 contribs sur SPIP-Zone, 222 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 ?
  • [Se connecter]

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

  • Formidable, le générateur de formulaires

    23 janvier 2012 – 2190 commentaires

    Un générateur de formulaires facilement configurable pour les non-informaticiens et facilement extensible pour les développeurs. Introduction L’objectif était de créer un plugin permettant de générer des formulaires. Historiquement, 2 plugins (...)

  • GIS 4

    11 août 2012 – 1384 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)

  • Plugin Contacts & Organisations

    4 janvier 2010 – 267 commentaires

    Ce plugin ajoute à SPIP des fonctionnalités de gestionnaire de contacts. Distingue les personnes morales (organisations) des personnes physiques (contacts) en conservant tous les attributs des auteurs SPIP. En conjonction avec le plugin (...)

  • Acces Restreint 3.0

    11 décembre 2008 – 810 commentaires

    Le plugin accès restreint permet de définir et de gérer des zones de l’espace public en accès restreint. Cette version du plugin a été redévelopée et optimisée tout spécialement pour SPIP 2.0. Il en découle une amélioration des performances sur les gros (...)

  • Crayons : Contrôleurs et Vues

    1er mai 2007 – 22 commentaires

    Cet article est en cours de rédaction (donc incomplet), merci si vous avez : des corrections, des compléments, des exemples (simples si possible), des captures d’écran ou videos de démo, une traduction à proposer, n’hésitez (...)

Ça spipe par là