Concepts
La contrib « Afficher les mots-clés en faisant varier la taille de la police » permet d’afficher une liste de mots clefs en variant la taille de la police en fonction du nombre d’articles associés à chaque mots.
Ici, nous proposons une version générique de cette méthode qui permet, avec de simples filtres, de calculer les variations de taille de police [1]. De plus, les filtres proposés permettent d’appliquer le principe à quasiment tout élément dont on peut avoir une représentation numérique de l’importance dans le site.
On pourra ainsi :
mettre en valeur une rubrique en fonction du nombre d’articles qu’elle contient,
mettre en valeur une rubrique en fonction de la popularité des articles qu’elle contient,
mettre en valeur des articles en fonction du nombre de document associés,
etc...
Une démo qui vous sera plus parlante est disponible ici.
Les filtres
Commençons par la définition des filtres qui devront être copiés dans le fichier mes_fonctions.php3 :
noop mange tout ce qui lui est passé, il nous servira à faire des calculs sans rien afficher.
filtre_max trouve le maximum parmi les valeurs qui lui sont passées (on peut lui passer un paramètre optionnel pour pouvoir l’utiliser indépendamment plusieurs fois sur la même page),
coef calcule un coefficient représentant l’importance pour l’affichage. On doit l’appliquer après filtre_max et spécifier la valeur dont on veut calculer le coefficient. il prend aussi un paramètre optionnel qui spécifie la valeur maximum qui pourra être retournée,
repeat répète une chaîne un certain nombre de fois. On peut l’utiliser pour transformer le coefficient en une répétition de balises (voir plus bas). Il prend un paramètre optionnel spécifiant en dessous de quelle valeur il ne faut rien retourner (on peut ainsi filtrer les résultats ayant un coefficient trop petit).
Des boucles
Voici quelques exemple d’utilisation de ces filtres.
Le premier exemple permet d’afficher le titre des rubriques avec des tailles de police différentes en fonction du nombre d’articles qu’elles contiennent.
On défini déjà un style pour fixer les tailles de police. Plus la rubrique sera importante, plus il y aura de balises <em> autour :
On doit ensuite, dans le squelette, faire deux boucles :
- _max et _max_art servent à calculer le nombre maximum d’articles qui sont contenus dans les rubriques du site. En appliquant
|filtre_max{total}sur le nombre d’articles dans chaque rubrique, on va garder le plus grand nombre d’articles trouvé.|noopsert à ne pas afficher la valeur retournée par le filtre qui cherche le maximum. - _aff et _aff_art parcoure toutes les rubriques et calcul le coefficient d’affichage.
|filtre_max{total}retourne le nombre d’articles maximal trouvé dans la première boucle.|coef{#TOTAL_BOUCLE}calcul l’importance du nombre d’articles dans cette rubrique par rapport au nombre d’articles maximum.|repeat{#_aff:TITRE,<em>,</em>}entoure le titre de la rubrique du nombre de balises<em>défini par le filtre coef
Le deuxième exemple utilise le même principe pour afficher les articles d’une rubrique « galerie » en fonction du nombre d’images qu’ils contiennent :
La différence ici est que l’on utilise directement le filtre coef pour fixer la taille de la police. On passe donc un deuxième paramètre à ce filtre pour spécifier que le coefficient doit être calculé entre 0 et 250.
La dernière boucle d’exemple est un peu différente. Elle affiche les rubriques en fonction de la popularité de leur article le plus populaire :
Les boucles max_art et aff_art ne sont plus là pour calculer un total, mais pour trouver la popularité maximum. On fait donc une boucle triée par popularité croissante et l’on ne prend que le premier résultat (i.e. l’article avec la plus forte popularité).

