Nuage (de mots-clés)

L’article « Afficher les mots-clés en faisant varier la taille de la police » de BoOz et Fil permettait déjà d’afficher un nuage de mot-clés.

Le présent article reproduit exactement les mêmes résultats, puisqu’il s’agit de son adaptation sous forme de modèles, le tout sous forme de plugin pour faciliter l’installation.

Important : il faut que les statistiques de SPIP soient activées pour que le plugin fonctionne

Contenu du plugin

Il contient deux fichiers html, les modèles nuage.html et nuage_popularite.html. Les fichiers php, quant à eux, définissent un filtre |nuage ou |nuage_pop. On insère aussi quelques styles css dans l’entête de la page, ce qui nécessite l’emploi de la balise #INSERT_HEAD.

Utilisation

Une fois le plugin activé, vous pouvez faire appel aux modèles selon les deux méthodes classiques :

  • dans un squelette html
    • [(#MODELE{nuage})]
    • [(#MODELE{nuage}{id=4})]
  • dans un article :
    • <nuage1>
    • <nuage1|popularite>
    • <nuage|> (notation permettant d’afficher un nuage sans sélectionner de groupe de mots-clés)

La valeur passée en paramètre est facultative et correspond à l’identifiant d’un groupe de mots-clés, si on souhaite réduire le nuage à un seul groupe de mots.

De plus, [(#MODELE{nuage}{id_article=10})], ou <article10|nuage> affichent le nuage en exposant les mots-clés associés à l’article passé en paramètre.

Personnalisations

Cadeau de Noël ou Oeuf de Pâques

Pour faire une sélection de plusieurs groupes de mots-clés et générer un seul nuage, on profite du fait que le critère de sélection dans le modèle est une expression régulière. On peut alors écrire {id=4|10} pour sélectionner les mots des groupes 4 et 10. Attention, ça marche seulement pour l’appel depuis un squelette.

A l’inverse on peut exclure certains groupes de mots clés en utilisant le critère de sélection notid. Celui-ci fonctionnant également selon une expression régulière, la syntaxe permettant de ne pas prendre en compte les groupes 5 et 11 est donc de la forme : {notid=5|11}

Discussion

131 discussions

  • 2

    je n’arrive pas à faire apparaître un « nuage de mots-clé » sur ma page sommaire. Il me semble avoir pourtant appliqué les consignes. quelqu’un pourrait-il me décrire la démarche de A à Z
    s’il vous plaît ?
    https://aleaetillustre.ouvaton.org/?var_mode=calcul

    • Bonjour

      Votre squelette semble bon avec l’appel du nuage.

      Je viens de regarder
      Pour que le nuage fonctionne, il faut que les statistiques soient activées.
      En effet le calcul du nuage se base sur la popularité des articles.

      Il faut donc :
      -  activer les statistiques de SPIP
      -  attendre 24h pour avoir des popularités mise à jour (la popularité apparait avec coté des boutons recalculer dans l’espace public)

      Bonne chance

    • Merci beaucoup (depuis la première réponse reçue à une question sur l’utilisation de SPIP, sur IRC, je suis toujours épaté par la gentillesse et l’efficacité des gens qui me répondent… et ça doit faire 15 ans) :)

    Répondre à ce message

  • 4

    Bonjour,
    Je voulais signaler que le plugin fait planter un site sous SPIP 3.2.12 au moment de la mise à jour à la version 5.0.1.
    Merci de m’informer si vous réussissez à résoudre ce bug.

    Cordialement,
    Virginie

    • Bonjour,

      il faudrait en savoir plus
      -  que veut dire « fait planter »
      -  version de PHP ?
      -  avez vous quelque part accès aux logs php ?

    • Bonjour.

      • « Planter » signifie dans ce cas qu’on a une page blanche aussi bien dans l’espace privé que sur le site public : illustration à l’activation.
      • Il suffit ensuite de supprimer le dossier nuage en SFTP et le site est OK.
      • Avec la version 4.0.8 du plugin cela fonctionne parfaitement.
      • La MAJ ou l’activation de la version 5.0.1 fait planter.
      • Version de PHP : 5.6.40
      • error_log contient : [Mon Jan 24 14:10:48.944693 2022] [:error] [pid 166] [client ...] PHP Parse error : syntax error, unexpected ’ ?’ in /apps/var/www/html/spip/plugins/auto/nuage/v5.0.1/nuage_fonctions.php on line 63
      • La ligne 63 est celle-ci : $nuage[’poids’][$id_mot] = $nuage[’poids’][$id_mot] ?? 0 ;

      Merci d’avance.

    • Une petite relance...

    Répondre à ce message

  • Bonjour,
    SPIP 3.2.7 plugin téléchargé à l’instant, dernière version.
    Je voudrais afficher tous les mots-clés du groupe thématique, n°4, mais le copier-coller

    [(#MODELE{nuage_popularite}{id=4})]

    renvoie tous les mots-clés utilisés sur le site et non pas uniquement ceux du groupe 4.
    Je ne vois pas du tout d’où ça peut venir.
    Merci de votre aide.

    Répondre à ce message

  • Fabre Henri

    Je viens d’installer ce plugin et j’ai créé un article avec le code <nuage2> cela fonctionne pour dénombrer les mots clés dans les articles. Est-il possible d’adapter le plugin pour que le dénombrement porte sur les mots-clés des rubriques ?

    mon site : http://www.cramesdelabobine.org

    Répondre à ce message

  • Pascal FORTIN

    Bonjour,

    Je découvre ce WE un dysfonctionnement sur le plugin « Nuage ».
    Est-ce lié aux dernières mises à jour de « nuage » (11/10/2017) ou de SPIP (13/10/2017), en tous les cas il est devenu impossible de ne spécifier l’affichage des mots clés de 1 seul groupe de mots clés.
    Voir http://www.clg-capucins-melun.fr
    Je vous joins aussi une copie d’écran.
    Merci pour vos conseils.
    Pascal FORTIN

    Répondre à ce message

  • 3

    Bonjour,
    Je viens de découvriir ce plugin que je trouve génial, merci à ces auteurs
    Bien entendu j’ai testé et dans l’espace privé les mots clé apparaîssent mais une fois sur l’espace public rien, j’ai beau recalculer la page toujours rien, supprimé le cache via Ftp, rien. je cherche voir si jai oublié quelque chose mais je ne vois pas. Merci de m’aider.

    • Je me réponds, j’ai compris, Dans ma page sommaire.html j’ai installé [(#MODELE{nuage}{notid=1|2})] à l’endroit ou je voulais qu’apparaisse le nuage, et le tour est joué. merci de m’avoir lu.

    • et oui, je suis de retour, j’y comprends plus rien, j’ai appliqué sur un autre site la même méthode et voilà qu’il m’envoie un message « Aucun squelette modèles/nuage n’est disponible... », alors là j’ai vraiment besoin d’explications, j’ai vérifié sur l’autre site et sur squelettes/modèles il n’y a rien
      Merci

    • Bon,
      Il semble que tout le monde soit parti, je laisse quand même un message :
      dans la page sommaire.html, étant donné que je n’ai que deux groupes de mots clés seul le deuxième m’intéresse alors j’ai indiqué l’appel ainsi : [(#MODELE{nuage}{notid=1})] et le résultat est le suivant

    Répondre à ce message

  • 1

    Hello,
    Bon, moi un truc m’échappe.

    Contexte : SPIP 3.0.17 en dev HTML5 pour une migration d’un vieux squelette de spip. Pas de forums, juste des articles. Je reprends tous les fichiers.

    J’ai activé les mot-clefs dans le backoffice, mais rien n’y fait.
    Je n’arrive pas à afficher le nuage

    Balise intégrée dans navsub : [(#MODELE{rubrique_nuage})]

    Ais-je oublié quelque chose ?
    Merci ;)

    • Bonjour,
      Je suis également sous 3.0.17 avec nuage 4.0.6. Je souhaite un nuage sur les documents, mais je test en premier lieu en page sommaire avec des mots clés sur article et ne parviens pas à afficher le nuage malgré l’insertion de [(#MODELE{nuage})].
      Je ne trouve pas la réponse.
      Merci

    Répondre à ce message

  • 1

    Bonjour,

    J’aimerai utiliser ce plugin différemment, mais le modèle n’existe pas (encore).

    Il s’agirait de générer un nuage présentant les litres des rubriques de niveau 2 de certains secteurs. Evidemment, cet affichage en nuage serait pondéré par la popularité ou le nombre d’articles des secteurs.

    Cela vous parait-il accessible aisément ?

    • Salut,

      je en sais plus trop où j’avais trouvé le truc (ça fait qqs temps), mais ça fonctionne :

      <div id="evenements">
      	<h1>Événements</h1>
      	<div><?php
      		$pop = array();
      		<BOUCLE_evenements(RUBRIQUES){par hasard}{id_parent=1}>
      			$titre[#ID_RUBRIQUE]='[(#TITRE|texte_script)]';
      			$url[#ID_RUBRIQUE]='#URL_RUBRIQUE';
      			<BOUCLE_art(ARTICLES){branche}>
      			</BOUCLE_art>
      			$pop[#ID_RUBRIQUE]=#TOTAL_BOUCLE; # Nombre d'articles pour cette rubrique et ses sous-rubriques
      			</B_art>
      		</BOUCLE_evenements>
      
      		$maxpop = @max($pop); # Plus grand nombre d'article pour un mot
      
      		foreach ($titre as $id => $t) {
      			$score = $pop[$id]/$maxpop; # entre 0 et 1
      			$s = ceil(4*$score);
      			$t = str_replace(' ', '&nbsp;', $t);
      			$l = "<a href='".$url[$id]."' class='nuage".$s."'>$t</a>";
      			echo "$l &nbsp; \n";
      		}
      	?></div>
      </div>

      Ça a visiblement été mis en ligne (quelle bonne idée) par là : http://contrib.spip.net/boucle-nuage-sur-rubriques

    Répondre à ce message

  • 3

    Bonjour, je suis en train de tester ce plugin sur un site en développement. J’ai intégré dans mon squelette de sommaire le modèle

    [(#MODELE{nuage})]

    et il marche parfaitement.

    Cependant j’ai un petit souci. Quand j’intègre ce même modèle dans mon squelette de rubrique, il ne se passe strictement rien. L’affichage du code source me montre bien que le modèle ne génère rien. (désolé, pour l’instant le site n’est pas accessible sur le net... je le teste en local)

    Ce que je voudrais c’est que le nuage correspondant à l’ensemble des mots clés du site s’affiche, quelque soit l’endroit où j’insère le modèle, de façon a avoir un mode de navigation alternatif (je ne trouve pas très intéressant d’avoir juste les mots clés d’un article ou d’une rubrique, c’est un avis personnel, en aucun cas une critique du plugin). Comment puis-je arriver à cette solution ?

    Merci d’avance, à part ça le plugin est très bien fichu

    • a priori AUCUNE raison que cela fonctionne différement en fonction du lieu d’appel. En revanche #[(MODELE{nuage})] ne peut pas fonctionner, le # n’étant pas au bon endroit.

      Il faudrait faire un var_mode=inclure et un var_mode=debug pour voir où cela cloche : http://www.spip.net/fr_article4453.html

    • Oups, désolé, c’est bien [(#MODELEnuage)] que j’ai mis dans mon code, je me suis juste trompé en tapant le message.

      J’essaierai de placer les paramètres de debug pour voir ce qu’il me dit je reviendrai pour donner mes résultats.

      Merci

    • Bonjour,

      J’ai un petit peu avancé, peut-être que ça va éclairer :
      J’ai essayé de recalculer la page sommaire et la page d’une rubrique avec var_mode=debug
      Dans les deux squelettes, j’ai placé un appel de modèle

      #[(MODELE{nuage})]

      J’ai l’impression qu’il se passe un drole de truc dans la boucle maxmot
      (j’ai pas regardé plus loin, mais déjà si ça part en vrille à ce niveau ça augure mal de la suite).

      sur la page sommaire cette boucle s’appuie sur la requête sql suivante :

      SELECT mots.id_mot
      FROM spip_mots AS mots
      WHERE (mots.id_groupe REGEXP '^(.*)$')
      	AND NOT((mots.id_groupe REGEXP '^(-1)$'))
      

      Ça me parait correct : on cherche à sélectionner tous les mots clés.

      Par contre la même boucle, quand elle est exécutée dans un quelette de rubrique, s’appuie sur la requête suivante :

      SELECT mots.id_mot
      FROM spip_mots AS mots
      WHERE (mots.id_groupe REGEXP '^(26)$')
      	AND NOT((mots.id_groupe REGEXP '^(-1)$'))

      Je pige pas le 26. id_groupe est sensé être un groupe de mots clés ? Si c’est le cas alors c’est très bizarre : je n’ai pas de groupe de mot clés ayant l’id 26 dans ma base, par contre 26 c’est bien l’id de la rubrique dans laquelle je suis.

      (par ailleurs je ne voudrais pas sélectionner juste les mots clés de la rubrique en question, je voudrais plutôt garder un comportement global, identique sur tout le site, mais je pense qu’il vaut déjà mieux voir ce qui cloche à ce stade).

      Eric

    Répondre à ce message

  • Bonjour,
    J’ai eu un petit désagrément quand à l’affichage des mots clés :
    En effet rien ne s’affichait pas, avec comme exemple donné le paramètre :
    [(#MODELE{nuage_popularite}{id=4})]

    En effet ce paramètre fonctionne apparement si on a activé les « Statistiques des visites » dans « configuration avancée » de Spip.

    Les stats se remplissant l’affichage des mots-clés devrait apparaître

    de plus on peut utiliser le paramètre suivant :
    #INCLURE{fond=modeles/nuage,id=4}
    pour afficher le modèle si cela ne fonctionne pas.

    Grand merci à b_b pour son aide précieuse sur le canal IRC #spip

    Cordialement.

    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