Comment trier les mots-clés avec les balises multi ?
Le but est d’afficher, pour chaque groupe de mots-clés, son titre et la liste des mots-clés triés qui lui sont rattachés ; pour ces derniers, on veut pouvoir faire un lien avec une page « mots-clés » contenant tous les articles liés à ce mot-clé. Mais, comme nous utilisons des balises <multi>
, il ne nous est pas possible d’utiliser le tri classique disponible dans les boucles (par titre).
De plus, les caractères particuliers des différentes langues posent problème au niveau d’un tri alphabétique : nous devons donc associer à tout cela la "translittération" fournie par SPIP (voir plus bas).
Voici donc le code qui marche bien (mais qui pourrait certainement être réécrit plus proprement !
Nous utiliserons donc 2 boucles imbriquées :
- 1- la boucle « groupes de mots » permet de stocker le nom du groupe dans une variable qui sera utilisé un peu plus tard ;-*2- la boucle « mots » va rechercher tous les mots-clés liés à ce groupe (remarque : on aurait pu travailler sur la seule boucle mots et utiliser la zone `creagh_raforum`.forum4_mots_type qui contient le nom du groupe ; malheureusement, cette zone est une clé de 100 caractères maximum, et certaines chaînes multilangues ont été tronquées)
Pour chacun des mots-clés, on crée une rangée d’un tableau de 5 champs :
– Le nom de groupe (depuis la variable stockée dans la boucle « groupes de mots » : on applique les filtres|translitteration|texte_script
; la "translittération" permet de rapprocher les caractères de même type pour le tri, le "texte_script" permettant, principalement, de rajouter un "" aux guillemets, apostrophes... Ce champ servira pour le tri
– Le même mais sans la translittération, qui servira pour l’affichage
– Le nom du mot-clé avec translittération
– Le même pour l’affichage
– Son URL
Ensuite, nous allons travailler ces 5 niveaux, après avoir trié les niveaux 1 et 3 :
– Niveaux 1 et 2 : on affiche le nom du groupe de mots
– Niveaux 2, 3 et 4 : on affiche le nom du groupe et son URL
Pour la partie "translittération", il faudra ajouter ce bout de code dans squelettes/mes_fonctions.php :include_ecrire('inc_charsets.php')
et rajouter ce fichier dans /ecrire (garder un exemplaire sous la main car /ecrire sera écrasé à chaque mise à jour.
Cette méthode est utilisée à plusieurs endroits :
– Dans la page des mots-clés : https://archives.cira-marseille.info/raforum/spip.php?page=mots
– Dans la page du dictionnaire des personnes (mots-clés particuliers) : https://archives.cira-marseille.info/raforum/spip.php?page=whoiswho
– Une boucle simplifiée dans la page mot-clé (ou personne) et qui n’affiche que les mots-clés « frères » ; ex : https://archives.cira-marseille.info/raforum/spip.php?mot65