Un nuage de mots-clés tout en SPIP, qui tient compte pour calculer la taille de chaque mot :
- du nombre d’articles
- du nombre de rubriques
- du nombre de sites associés à ce mot-clé
Intégration à un squelette
Le code suivant peut être utilisé dans un include ou ajouté au squelette. Dans le cas d’un include, on peut passer avec le paramètre class le nom d’une classe à ajouter à la balise <ul>
.
Par exemple, si on met le code dans un sous-squelette inclus qu’on appelle inc-keywordcloud, on peut écrire l’inclusion comme ceci :
<INCLURE{fond=inc-keywordcloud}{class=ma_classe}>
Il faut alors bien entendu spécifier sur la première ligne de l’include une valeur pour le cache. En fonction de la fréquence des changements que va subir la liste choisissez une valeur appropriée avec la balise #CACHE{n}
où n sera la durée de vie de la liste en secondes avant un nouveau calcul. #CACHE{3600*24}
par exemple pour un recalcul journalier de la liste.
Le résultat sur la page générée sera comme ceci :
<div class="mots">
<h3>Mots-clés</h3>
<ul class="ma_classe">
<li>...
...</li>
</ul>
</div>
<div class="mots">
<h3>Mots-clés</h3>
[(#SET{min,100000})][(#SET{max,0})]<B_scoresmots>#SET{ ecart, #GET{max}|moins{#GET{min}} }<BOUCLE_scoresmots (MOTS){type!==^_}>#SET{art,0}#SET{sit,0}#SET{rub,0}<BOUCLE_comptagerub (RUBRIQUES){id_mot}> </BOUCLE_comptagerub>[(#SET{rub,#TOTAL_BOUCLE})]</B_comptagerub><BOUCLE_comptageart (ARTICLES){id_mot}> </BOUCLE_comptageart>[(#SET{art,#TOTAL_BOUCLE})]</B_comptageart><BOUCLE_comptagesite (SITES){id_mot}> </BOUCLE_comptagesite>[(#SET{sit,#TOTAL_BOUCLE})]</B_comptagesite>[(#SET{rub,[(#GET{rub}|mult{2})]})][(#SET{sit,[(#GET{sit}|div{4})]})]#SET{score#ID_MOT,#GET{sit}|plus{#GET{art}}|plus{#GET{rub}}}[(#GET{score#ID_MOT}|>{#GET{max}}|?{#SET{max,#GET{score#ID_MOT}},""})][(#GET{score#ID_MOT}|<{#GET{min}}|?{#SET{min,#GET{score#ID_MOT}},""})]</BOUCLE_scoresmots><B_lesmots><ul[ class='(#ENV{class})']><BOUCLE_lesmots (MOTS){par type, titre}{type!==^_}>#SET{ place, #GET{score#ID_MOT}|moins{#GET{min}} }#SET{coef, #GET{place}|div{#GET{ecart}}|mult{1.5}}
[ (#GET{score#ID_MOT}|>{0}|?{<li><a style='font-size:[(#GET{coef}|plus{0.85}|round{2})]em' href='#URL_MOT'[ title="(#DESCRIPTIF|supprimer_tags)"]>[(#TITRE|replace{" "," "})]</a></li>,''})]</BOUCLE_lesmots>
</ul></B_lesmots>
</div>
La première boucle scoremots calcule le score de chaque mot et le stocke dans un tableau (variable score). Elle extrait également les scores maxi et mini (variables min et max).
La deuxième boucle lesmots affiche une liste des mots et style leur taille en fonction de leur score.
Style d’affichage
Ci-dessous les ajouts minimums à faire dans la feuille de style, pour afficher autant de mots que possible sur chaque ligne.
.mots {} /* définir ici l'apparence générale de la boite */
.mots ul {text-align:center;}
.mots li {display:inline; line-height:1.8em}
.mots li a {padding:4px 8px 4px 0}
Paramétrer la taille d’affichage
Il est possible de modifier plusieurs paramètres :
Pondération
Pour calculer le score de chaque mot, une rubrique vaut par défaut 2 points, un article 1 point et un site 0.25 points
Pour changer ceci, il suffit de modifier les coefficients dans la ligne suivante :
[(#SET{rub,[(#GET{rub}|mult{2})]})][(#SET{art,[(#GET{art}|mult{1})]})][(#SET{sit,[(#GET{sit}|div{4})]})]
Tailles mini et maxi
On peut spécifier la taille minimum et la taille maximum.
Par défaut, la taille minimum est de 0.85em, et l’écart avec la taille maxi est 1,5em (soit 2,35em pour le mot le plus gros). Modifier les lignes suivantes pour d’autres valeurs :
#SET{coef, #GET{place}|div{#GET{ecart}}|mult{1.5}}
[ (#GET{score#ID_MOT}|>{0}|?{<li><a style='font-size:[(#GET{coef}|plus{0.85}...
On peut également limiter l’affichage aux mots qui ont un score au-dessus d’une valeur choisie (par défaut 0 dans le code ci-dessus)
Remarques
Par défaut, la boucle exclut les mots-clés dont le nom du groupe commence par un « _ », afin de pouvoir exclure un ou plusieurs groupes non sémantiques.
Les mots-clés sont par défaut affichés par groupe, puis par ordre alphabétique.
Conditions d’utilisation
This software is licensed under the CC-GNU GPL version 2.0 or later.
Discussions par date d’activité
3 discussions
bonjour,
augmenter la valeur du cache ne diminue pas le nombre de calculs et de requêtes au moment du recalcul du nuage, cela ne fait que diminuer la fréquence de ces opérations.
l’autre méthode fonctionne sur plusieurs sites, et présente l’avantage de calculer le score de chaque mot de façon indépendante et asynchrone. le nuage est au final globalement plus à jour, et de manière plus économique. je peux peut-être vous aider à la faire fonctionner si vous le souhaitez, et si vous décrivez les problèmes rencontrés (sur le forum de l’autre version bien entendu)
Répondre à ce message
Pardon : nuage.html chez nous ... inc-keywordcloud.html chez vous (code ci-dessus).
Répondre à ce message
Bonjour,
Nous n’avons pas réussi à faire marcher votre 2e plugin (http://www.spip-contrib.net/Nuage-de-mots-cles,2985), par contre le 1er (celui-ci) fonctionne très bien.
Pour remédier au problème dont vous parlez (« la solution compte tous les éléments associés à chaque mot-clé, et pour un site avec beaucoup d’éléments et beaucoup de mots-clés, ça représente beaucoup de requêtes sql et beaucoup de calculs... ») on a mis une balise #CACHE7*24*3600 dans le nuage.html tout simplement !
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
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.
Suivre les commentaires : |