Sur les Mots-clés

  c’est souvent ’kermesse’ les jointures

Au contraire des boucles sur les Articles et les Rubriques, d’inspiration essentiellement hiérarchique, et qui différent souvent simplement sur le filtrage de sélection ou le tri des articles à présenter, les boucles fondées sur la table de mot-clé sont le plus souvent utilisées pour rajouter des sélections transversales englobant les précédentes ; et utiliser la gestion des groupes de mots-clés rajoute en fait beaucoup de possibilités, simplifiant la complexité apparente de cette option, qui était très largement sous-utilisée jusqu’à présent.

Article publié le 10 mars 2012, et actualisé en février 2022

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Dans un premier temps, nous ne ferons que récapituler quelques pointeurs et liens, et sans doute qu’une prochaine génération d’un site de la galaxie, ici ou ailleurs, rajoutera les exemples de code complet...(à suivre) - Article

 Afficher Groupes & Mots-clés

Pour mettre à disposition du visiteur une entrée de navigation par les mots-clés, le plus simple est peut-être de lui proposer une page dédiée, dont le contenu pourrait être la noisette ci-dessous :

  1. <BOUCLE_grmots(GROUPES_MOTS){id_groupe?}>
  2.     <h3>#ID_GROUPE. <i>Groupe:</i> <a href="#URL_PAGE{groupmot,id_groupe=#ID_GROUPE}">#TITRE</a>. </h3>
  3.     <B_mot><ul>
  4.     <BOUCLE_mot(MOTS){id_groupe}{par num titre, titre}{" - &amp;amp;nbsp; "}>
  5.         #SET{total,0}
  6.         <BOUCLE_articlesdesmotscles(ARTICLES){id_mot}>
  7.         </BOUCLE_articlesdesmotscles>
  8.         #SET{total,#GRAND_TOTAL}
  9.         </B_articlesdesmotscles>
  10.         <a href="#URL_MOT">#TITRE </a>
  11.         [(#GET{total}|choixsiegal{0, "", [ ((#GET{total}))]})]
  12.         </BOUCLE_mot>
  13.         </ul></B_mot>
  14. </BOUCLE_grmots>

Télécharger

Celle-ci compte simplement les occurrences d’usage (en Articles seulement) de chaque mot-clé dans les divers groupes du site.
Pour plus de détails, et selon l’importance de votre site, vous introduirez éventuellement un - <a href="#URL_ARTICLE">#TITRE</a> au sein de la boucle articlesdesmots.

 Afficher les mots-clés portant juste sur un type d’objet

Voici une autre boucle selon le même principe :
Limiter l’affichage des mots-clés liés seulement aux rubriques (ou articles) :

  1. <BOUCLE_grmots(GROUPES_MOTS){id_groupe?}{tables_liees=rubriques}>
  2.     <h3>#ID_GROUPE. <i>Groupe:</i> <a href="#URL_PAGE{groupmot,id_groupe=#ID_GROUPE}">#TITRE</a>. </h3>
  3.     <B_mot><ul>
  4.     <BOUCLE_mot(MOTS){id_groupe}{par num titre, titre}{" - &amp;amp;nbsp; "}>
  5.         #SET{total,0}
  6.         <BOUCLE_desmotscles(RUBRIQUES){id_mot}>
  7.             #TITRE
  8.         </BOUCLE_desmotscles>
  9.         #SET{total,#GRAND_TOTAL}
  10.         </B_desmotscles>
  11.         <a href="#URL_MOT">#TITRE </a>
  12.         [(#GET{total}|choixsiegal{0, "", [ ((#GET{total}))]})]
  13.         </BOUCLE_mot>
  14.         </ul></B_mot>
  15. </BOUCLE_grmots>
  16. <//B_grmots>

Télécharger


Mais attention, le champ #TABLES_LIEES étant éventuellement multi-valué (!), cette astuce ne vous affichera pas les groupes de mots-clés liés aux articles et à autre chose (Spip 2) !

 Afficher les documents liés...

Encore une nouvelle boucle :
le problème, c’est juste d’afficher les documents liés à un groupe de mots-clés, d’une rubrique où se trouvent des articles dont les documents sont associés à ces mots-clés ; il semble que l’écriture ci-dessous reprend bien tous les éléments...
<BOUCLE_documents_taggues(DOCUMENTS mots_liens){mots.id_groupe=2}{id_mot?=#ENV{id_mot}}>

Mais cette boucle rend tous les documents du site avec ces mots-clés, alors qu’on veut seulement ceux de la rubrique.. mais les tables documents et mots-liens ne comportent aucune information (clé étrangère) pour l’article ou la rubrique concernée...

Finallement il suffisait ( ;-)) d’ajouter {articles.id_rubrique} !
Miracle des jointures automatiques de SPIP : la simple référence au critère contextuel de la rubrique courante par article, suffit a faire calculer le produit cartésien étendu...
Solution : <BOUCLE_documents_taggues(DOCUMENTS mots_liens){mots.id_groupe=2}{articles.id_rubrique}{id_mot?=#ENV{id_mot}}>


Merci de nous signaler les coquilles, imprécisions ou erreurs qui figureraient dans cette page.


Liens A2A visibles seulement pour les inscrits.
Liens visibles seulement pour les inscrits.

Article publié le 10 mars 2012, et actualisé en février 2022 .

1 Message

  • 19 mai 2015 09:59, par Mist. GraphX

    Bonjour,

    Merci pour cet article. un suggestion d’amélioration

    cette astuce ne vous affichera pas les groupes de mots-clés liés aux articles et à autre chose

    on peut utiliser le critère LIKE sur la boucle appliqué au champ tables_liees ainsi

    <BOUCLE_listFiltres(GROUPES_MOTS){par titre}{tables_liees LIKE %produits%}>
              #TABLES_LIEES
    #TITRE<br>
    </BOUCLE_listFiltres>

    on aura donc les résultats des groupes étant associés aux produits & autres objets ....

    Réagir à cette information

Répondre à cet article