RAForum
Slogan du site
Descriptif du site
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).

Article mis en ligne le 11 juillet 2004
dernière modification le 24 novembre 2008
logo imprimer

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`.spip_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 : http://raforum.info/spip.php?page=mots
- Dans la page du dictionnaire des personnes (mots-clés particuliers) : http://raforum.info/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 : http://raforum.info/spip.php?mot65


Évènements à venir

Pas d'évènements à venir
Site réalisé sous SPIP
avec le squelette ESCAL 4.0.52