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.

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_popularite}{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

130 discussions

  • petite remarque : de temps en temps l’affichage est conforme à ce que je souhaite (mots plus ou moins gros selon la fréquence d’attribution) mais ça semble totalement aléatoire .... désolé d’avoir ouvert un nouveau fil je ne sais pas comment j’ai fait

    Reply to this message

  • 1

    Bonjour,

    J’obtiens une erreur

    Warning: Division by zero in /.../nuage_fonctions.php on line 98

    Les mots clés sont bien listés mais sans aucune mise en forme.

    SPIP 2.1.8 - Plugins Nuage : Version : 3.0.1 [45857]

    • Au temps pour moi, les stats n’étaient pas activés !!
      désolé du dérangement.

    Reply to this message

  • Bonjour,

    Je viens de mettre à jour le plugin nuage (de la révision 42120 vers la 45857).
    Or je perd la mise en forme de mon nuage. Comme si nuage.css n’était plus appelé.
    A la place il me semble que le plugin appelle le fichier ’nuage-style.css.html’.

    Du coup j’ai créé un fichier de ce nom dans mon répertoire ’squelettes’, mais il n’est pas pris en compte...

    Voyez-vous où je me suis trompé ?

    Reply to this message

  • 3
    Gé Vé

    Bonjour,

    Après avoir activé le plugin nuage version 3.0.1 sur un site SPIP 2.1.8 avec eva 4.1, je ne parviens pas à afficher le nuage.

    J’obtiens ceci :
    message : Aucun squelette modeles/nuage.html n’est disponible...
    squelette : plugins/auto/eva_squelettes_pour_spip_2_0/noisettes/sommaire/ma_noisette2.html

    Voici le contenu du fichier html copié par eva dans la page de sommaire

    <div class="blocs">
    <h3 class="titre">Bloc perso 2 : essai de nuage</h3>
    "[(#MODELE{nuage})]"
    </div>

    Pourriez-vous m’éclairer?

    • Gé Vé

      Juste une précision : contrairement à ce que vous pouvez lire plus haut, je n’ai pas mis de guillemets à la ligne 3.

    • Salut, oui cela ne fonctionnait pas car un gentil contributeur à amélioré le plugin en oubliant de penser à la compatibilité avec l’existant. Je viens de corriger ça à l’instant, une mise à jour du plugin dans les heures qui suivent devrait régler ton problème.

      ++

    • Gé Vé

      La nouvelle version fonctionne! J’en profite pour adresser, de la part d’un utilisateur assidu mais ignare en lignes de codes, un grand merci aux développeurs pour l’ensemble de leur œuvre.

    Reply to this message

  • Bonjour,
    Y a t’il moyen de ne pas sélectionner une rubrique de mot-clé ?
    J’ai essayé :

    [(#MODELE{nuage}{id_groupe!=1})]

    Cela ne fonctionne pas!

    Reply to this message

  • 2
    Joël Bertrand

    Petit patch sans prétention qui permet d’afficher les tags avec des couleurs aléatoires. Je trouve que ça améliore grandement la lisibilité. À rajouter dans nuage_fonctions.php.

    Exemple ici : http://www.freevms.net

    function coul_aleat()
    {
        $couleur = array('#5786ae','#83afd5','#30618a','#87919a','#456077');
        $valeur = rand(0,5);
    
        return($couleur[$valeur]);
    }
    
    function nuage_affiche_couleur($nuage,$max_mots = -1){
        if (!is_array($nuage)) $nuage = unserialize($nuage);
        if (!is_array($nuage)) return "";
        $out .= "";
        foreach($nuage as $cle=>$vals){
            $a = "<a rel='tag' href='".$vals['url']."' class='nuage".$vals['class'].($vals['expose']?' on':'')."' style=\"color: ".coul_aleat().";\">";
            $a = $a . $cle . "</a>";
            $out .= "<dt>$a</dt> ";
            $out .= "<dd class='frequence'>".$vals['poids']."</dd>";
            if ($max_mots>0) $max_mots--;
            if ($max_mots==0) break;
        }
        return "<dl class='nuage'>$out</dl>";
    }
    • Bonjour,

      Jai placé ton patch à la fin de mon fichier nuage_fonctions (juste avant “?>”) mais ça ne change pas les couleurs .

      Faut-il le placer ailleurs ?

      Merci d’avance

    • Joël Bertrand

      Il faut appeler le nuage dans le squelette par :

          <BOUCLE_langue(GROUPES_MOTS){titre=#LANG}>
              [(#MODELE{nuage_aleatoire}{id=#ID_GROUPE})]
          </BOUCLE_langue>

      (par exemple) puis créer le modèle : nuage_aleatoire.html

      [(#CONFIG{multi_articles}|=={oui}|?{' '})#SET{lang,#ENV{lang}}]
      <BOUCLE_tags(MOTS){type ?}{id_groupe==^((#ENV{id,.*}))$}{id_groupe!==^((#ENV{notid,-1}))$}{par #ENV{tri,titre}}>
      [(#ID_MOT|nuage{[(#TITRE)],[(#ENV{url}|?{[(#ENV{url}|parametre_url{id_mot,#ID_MOT}|parametre_url{lang,#GET{lang}})],[(#URL_MOT|parametre_url{lang,#GET{lang}})]})]})]
          <BOUCLE_pop(ARTICLES){id_mot}></BOUCLE_pop>[(#ID_MOT|nuage{'','',#TOTAL_BOUCLE})]<//B_pop>
      </BOUCLE_tags>
      [(#NUAGE|nuage_tri{hasard}|nuage_affiche_couleur{#ENV{max, -1}})]

    Reply to this message

  • Bonjour
    J’i un problème avec le plugin :
    Quand il est activé, l’espace publique n’apparait plus.
    J’ai juste une page blanche.
    Si je m’identifie sur mon site puis vait dans l’espace public, cela marche.
    J’aimerai le desinstaller completement mais je ne vois pas de bouton desinstaller.
    Merci pour vos conseils.

    Reply to this message

  • 1
    Pascale

    Je rencontre un problème avec le plugin Nuage 1.4 et spip 2.1.0 : les mots clé associés à des articles s’affichent correctement mais pas ceux associés à des rubriques. C’est du moins la seule explication que j’ai trouvée pour comprendre que l’un des 2 groupes de mots clé ne s’affiche pas avec le plugin.
    Est-ce la bonne piste ? Comment contourner ?

    • J’avais le même problème et en regardant dans le fichier plugins/nuage/modeles/nuage.html
      j’ai remarqué une boucle qui appelle les mots clés liés aux articles,
      <BOUCLE_pop(ARTICLES){id_mot}></BOUCLE_pop>[(#ID_MOT|nuage{'','',#TOTAL_BOUCLE})]<//B_pop>
      je l’ai dupliquée en modifiant articles par rubriques
      <BOUCLE_pop2(RUBRIQUES){id_mot}></BOUCLE_pop2>[(#ID_MOT|nuage{'','',#TOTAL_BOUCLE})]<//B_pop2>

      et j’ai les mots clés liés aux articles et aux rubriques

    Reply to this message

  • hello,
    Le plugin marche très bien mais je n’arrive pas à régler précisément le “score minimum” du nuage avec CFG (version 1.5.1 du plugin sur spip 2.1.2).

    cfg dit : “Cette valeur permet de filtrer le nombre de mots
    affichés dans le nuage : de 0 à 1 (0 affiche tous les mots).”

    quand je mets 0, tous les mots-clés s’affichent (une centaine de mots) ; 0.2 tous les mots s’affichent aussi ; idem avec 0.25 ou 0.28 ou 0.3...
    si je mets 0.35 le nuage n’affiche plus que 15 mots-clés ; et 0.5 affiche aussi 15 mots-clés.

    Comment faire pour en afficher un peu plus de 15 et un peu moins de 100 ? (par exemple une cinquantaine)

    merci!

    Reply to this message

  • Bonjour,

    J’ai installé le plugin, nuage, sans problème

    Comme convenu, je fais appel au squelette \plugins\nuage\modeles\nuage.html de ce dernier, mais je ne passe pas dans a boucle ci dessous.

    BOUCLE_tags situé entre la lige 4 et 8 du fichier nuage.thml

    Quelles sont les conditions requises pour y passer

    Merci d’avance.

    Reply to this message

Add a comment

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 / PostgreSQL
  • 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 apparait.

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.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom