Nuage de mots-clés tout en SPIP

taille proportionnelle au nombre de rubriques, d’articles et de sites

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

Afficher une liste de tous les tags utilisés, la taille d’affichage de chaque tag est proportionnelle au nombre de rubriques, d’articles et de sites associés à ce tag.

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}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&eacute;s</h3>
<ul class="ma_classe">
	<li>...
	...</li>
</ul>
</div>
<div class="mots">
<h3>Mots-cl&eacute;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{" ","&nbsp;"})]</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



CC-GNU GPL

This software is licensed under the CC-GNU GPL version 2.0 or later.

Discussion

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

  • Regis92

    Pardon : nuage.html chez nous ... inc-keywordcloud.html chez vous (code ci-dessus).

    Répondre à ce message

  • Regis92

    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 :

  • 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