Afficher les mots-clés en faisant varier la taille de la police

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

L’idée est d’afficher les mots clés en vrac, en faisant varier la taille de la police en fonction du nombre d’articles associés au mot-clé. En d’autres termes, spip permet de créer des « tags » !

Vous ne connaissez pas les tags ? C’est le dernier truc en vogue sur les blogs et compagnie.

Il s’agit d’afficher en vrac dans une boite les mots-clés associés aux articles, en faisant varier la taille de la police selon l’importance du mot-clé.

Exemples :
http://www.technorati.com/tag/
http://www.flickr.com/photos/tags/

Dans le cadre de SPIP on se limitera aux mots-clés attribués par les auteurs dans l’espace privé.

Voici deux exemples qui montrent comment faire varier la taille de la police en fonction du « score » du mot-clé, calculé à partir du nombre d’articles qui lui sont liés, ou de la popularité de ceux-ci.

1) Le nombre d’articles associés au mot-clé

Dans cet exemple on fera varier la taille de la police entre 10px et 40px.

<?php
$pop = array();
<BOUCLE_mot(MOTS){par hasard}>
$titre[#ID_MOT]='[(#TITRE|texte_script)]';
$url[#ID_MOT]='#URL_MOT';
<BOUCLE_art(ARTICLES){id_mot}>
</BOUCLE_art>
$pop[#ID_MOT]=#TOTAL_BOUCLE; # Nombre d'articles pour ce mot
</B_art>
</BOUCLE_mot>

$maxpop = @max($pop); # Plus grand nombre d'article pour un mot

foreach ($titre as $id => $t) {
       $score = $pop[$id]/$maxpop; # entre 0 et 1
       if($score > 0.05){
         $s = ceil(30*$score);
         $s = 10 + $s;
         $t = str_replace(' ', '&nbsp;', $t);
         $l = "<span style='font-size:".$s."px'>$t</span>";
         $l = "<a href='".$url[$id]."'>$l</a>";
         echo "$l &nbsp; \n";
       }
}
?>

Pour ne pas surcharger, on a décidé de ne pas afficher, dans l’exemple ci-dessus, les mots-clés qui ne représentent pas plus de 5% du poids maximum.

2) La popularité du mot-clé

Dans cet exemple on fera varier la taille de la police de 1 à 15 en fonction de la popularité du mot-clé ; comme SPIP ne calcule que la popularité des articles, il faut additionner, pour chaque mot, les popularités de tous les articles liés à ce mot, ce qui donne le score du mot.

On modifie ensuite le profil de la répartition des valeurs avec une fonction choisie au pif pour qu’elle donne de jolies choses (en l’occurrence, ici, la fonction f(x) = x^{1.5} qui est concave mais pas trop — elle augmente les plus gros scores sans écraser les petits)...

<?php

$titre = $pop = array();
<BOUCLE_mot(MOTS){par hasard}>
$titre[#ID_MOT]='[(#TITRE|texte_script)]';
$url[#ID_MOT]='#URL_MOT';
<BOUCLE_art(ARTICLES){id_mot}{par popularite}{inverse}{0,200}>
$pop[#ID_MOT]+=#POPULARITE_ABSOLUE;
</BOUCLE_art>
</BOUCLE_mot>

$maxpop = @max($pop);

foreach ($titre as $id => $t) {
       $score = $pop[$id]/$maxpop; # entre 0 et 1
       $score = pow($score,1.5); # lissage
       $s = ceil(15*$score);
       $t = str_replace(' ', '&nbsp;', $t);
       $l = "<font size=$s>$t</font>";
       $l = "<a href='".$url[$id]."'>$l</a>";
       echo "$l &nbsp; \n";
}
?>

A noter : il existe aussi une version toute en filtres et balises de ce concept, voir l’article Un affichage fonction de l’importance relative dans le site.

Discussion

4 discussions

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom