function tagList dans core/lib/plx.class.show.php

bazooka07bazooka07 PluXml Lead Developer, Moderator
Bonjour,

J'ai eu quelques tracas pour afficher correctement les mots-clès (tags) avec 50 des fables de La Fontaine sur mon site de test chez Free: http://jeveuxpartir.free.fr/pluxml/.
Certains mots-clés dans les plus fréquents n'étaient pas affichés.

Dans le code, on récolte et on compte tous les tags en parcourant tous les articles.
Puis après, avec plxShow, on en prend une tranche (array_slice) de 20, et ensuite on trie.
Conséquence, si des tags plus fréquents sont dans les articles n°21 à 50, ils ne s'affichent pas dans le top 20.
Il faut d'abord trier l'ensemble et prendre la tranche ensuite pour remettre les tags les plus populaires dans le top 20.

Avec plxShow, on ne trie pas par défaut. Mais connaitre la popularité des tags, c'est quand bien plus sympa. Donc, je souhaite un tri numérique décroissant par défaut sur les occurences des tags dans les articles.

Quand on parcourt les articles, on calcule, pour chaque tag, son url, même si on l'a déjà fait sur un article précèdent et même s'il ne restera pas dans la tranche. Du coup le serveur bosse pour rien.

Un tableau associatif type "$buf = array(); $buf[$tag] = $count;" simplifie bien le tri des tags.

Enfin, lorsqu'on a envoyé chaque tag vers la sortie, il n'y a pas de mise à l'échelle pour le nombre d'occurences des tags utilisé dans la classe "tag-size". Juste un plafond de 10 à ne pas dépasser. Au début de la vie du site, on commence avec des tag-size-1 ou tag-size-2. Lorsque le site aura bien tourné, avec des tags qui reviennent très souvent, on aura que des tag-size-10. Pas top !

Du coup, j'ai remastérisé la fonction pour remettre les choses dans l'ordre.
L'archive des modifs est dispo ici : http://kazimentou.fr/divers/tagList.zip
Elle contient un fichier .diff et pour les moins aguerris la nouvelle fonction tagList complète à inclure dans core/lib/clx.class.show.php (a mettre dans le même dossier).

A++

Réponses

Connectez-vous ou Inscrivez-vous pour répondre.