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

  • 9

    Bonjour,

    Pour une raison que j’ignore, suite à la MAJ de SPIP (v. 2.1.10) et de Nuage, le critère frequence n’est plus reconnu dans mes boucles.

    J’ai plusieurs autres plugins d’installer. Y a-t-il des problèmes de compatibilité connus avec d’autres plugins ou auriez-vous une idée de ce qui cause le problème?

    Gros merci!

    Zaa

    • Salut, oui je remarque que le critère fréquence a été ejecté du plugin par ce commit :

      http://zone.spip.org/trac/spip-zone/changeset/45514/_plugins_/nuage

      Je ne sais pas si c’est voulu par son auteur (d’autant plus que le diff du commit n’indique pas que le fichier frequence_fonctions.php est supprimé).

      Il semblerait donc que le critère fréquence ne soit plus nécessaire au fonctionnement du nuage. As-tu un modèle de nuage personnalisé dans ton répertoire /squelettes ou utilises-tu les modèles par défaut du plugin ?

      ++

    • Bonjour,

      Merci de ta réponse, en effet, j’utilise dans mes squelettes le critère fréquence, plusieurs modèles qui viennent avec le plugin l’utilise également.

      J’ai ajouté dans le fichier plugins/auto/nuages/nuage_fonction.php

      à la fin complètement, le code suivant:

      //la gestion du critere {frequence} 
      include_spip('frequence_fonctions'); 

      Mon modèle de nuage fonctionne de nouveau! :D

      Merci

    • Bonjour,

      Si ce fichier n’existe pas on doit le créer ? J’utilise le squelette Simple Magazine.

      Merci.

    • Salut, il suffit de créer un fichier squelettes/mes_fonctions.php avec le code suivant dans le fichier :

      <?php
      include_spip('frequence_fonctions');
      ?>

      Et hop ++

    • Merci pour la rapidité de ta réponse, malheureusement ça ne change rien j’ai toujours cet horrible

      1 	Critère inconnu
      frequence	
      squelettes/modeles/nuage2.html	
      _mots	
      7

      Et ce fichier c’est

      03
       [(#REM) Squelette du plugin "Nuage" modifié pour faire apparaître seulement n tags par hasard. Modifier le filtre en ligne 9]
      04
       
      05
       [(#CONFIG{multi_articles}|=={oui}|?{' '})#SET{lang,#ENV{lang}}]
      06
       #SET{expose,#ARRAY}<BOUCLE_expose(MOTS){id_article ?}>[(#SET{expose,[(#GET{expose}|push{#ID_MOT})]})]</BOUCLE_expose>
      07
       <B_mots>
      08
       <ul class="nuage">
      09
           <BOUCLE_mots(MOTS){frequence}{type ?}{id_groupe==^((#ENV{id,.*}))$}{id_groupe!==^((#ENV{notid,-1}))$}{0,20}{par hasard}>
      10
           [(#SET{score,[(#FREQUENCE|div{#MAX_FREQUENCE})]})]
      11
           [(#GET{score}|>{0.05}|?{' '})[(#SET{score,[(#GET{score}|plus{0.900001})]})][(#SET{unite,[(#GET{score}|floor)]})][(#SET{decimale,[(#GET{score}|moins{#GET{unite}}|mult{10}|floor)]})]<li>
      12
                   <a rel="tag" href="[(#URL_MOT|parametre_url{lang,#GET{lang}})]"[ class="(#GET{expose}|find{#ID_MOT}|?{on})"] style="font-size: #GET{unite}[.(#GET{decimale})]em;">#TITRE</a>
      13
                   <span class="frequence">([(#FREQUENCE)]/[(#MAX_FREQUENCE)])</span>
      14
               </li>
      15
           ]</BOUCLE_mots>
      16
       </ul>
      17
       </B_mots>
    • Même en ayant vidé le cache du site ?

      L’adresse du site en question serait bien utile pour t’aider...

      ++

    • Oui même en vidant le cache :/

      Désolé pour l’adresse mais c’est un site test en local

    • Bon ben sans plus d’info ça va pas être facile :p Passe faire un saut sur le channel IRC de SPIP pour qu’on en cause en direct :

      http://www.spip.net/irc

      ++

    • Problème résolu !

      Pour savoir comment b_b m’a sauvé la vie, suivez ce lien !

      http://www.spip-contrib.net/Le-jeu-...

      Merci encore,

      Tchoo !

    Reply to this message

  • 2

    Bonjour,

    Je viens de tester ce plugin pour la première fois. J’utilise la version 2.1.10 de SPIP.
    J’ai l’impression que le plugin ne tient absolument pas compte du groupe de mots clés que je lui demande, il affiche tout dans tous les cas.

    J’ai testé les tags suivants dans mes squelettes :

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

    Quelqu’un aurait-il une idée ? En vous remerciant d’avance ! :-)

    • En fait, je bataille depuis une vingtaine de minutes sur ce problème, mais il suffit de demander pour trouver...

      Sauf erreur de ma part, il y a une petite coquille dans la doc ci-dessus, puisque le tag qui j’ai réussi à faire fonctionner est le suivant :

      [(#MODELE{nuage_popularite}{id_groupe=2|4})]

      En espérant que ça puisse en aider d’autres ! :-)

    • Ah merci pour l’info, je commençais à m’arracher les cheveux ;)

      AA

    Reply to this message

  • Ça fonctionne :-)
    voir par exemple http://saintbrieuc-treguier.catholique.fr/+-Eveque,600-+
    Ceci dit, dans l’affichage des mots clés du même groupe, je souhaiterai ne pas afficher les mots clés non attribués. Comment faire ?
    Merci d’avance.

    Philippe

    Reply to this message

  • Bonjour,
    Moi j’ai juste mis dans mon squelette [(#MODELEnuage)] et j’ai les mots clé qui s’affichent sans problème. Mes j’ai 3 questions

    1/ Alors si je devais m’arrêter au groupe de mot 1 je dois mettre [(#MODELEnuageid=1)] n’est ce pas??

    2/ quelle est la différence entre [(#MODELEnuage_popularite)] et [(#MODELEnuage)] ?

    3/ pourquoi doit on choisir [(#MODELEnuage_popularite)] et NON [(#MODELEnuage)] ?

    Reply to this message

  • SamThiriot

    Hello,

    comme ce plugin est très bien fait, on peut surcharger facilement le modèle nuage_popularite.html . Pour ma part, je l’ai modifié afin de baser la taille des mots sur la notation (avec le plugin adéquat) plutot que la popularité; cela permet également de tenir compte des notes des documents, ce qui ne fonctionne pas avec la popularité (pas de stats sur documents joints).

    Je colle ça ici au cas où ça pourrait être utile à quelqu’un.

    #SET{max,0}
    <BOUCLE_maxmot(MOTS) {id_groupe==^((#ENV{id_groupe,.*}))$} {id_groupe!==^((#ENV{notid,-1}))$}>
            #SET{pop,0}
            <BOUCLE_pop_articles(ARTICLES){notation} {id_mot}>
                    [(#SET{pop,[(#NOTATION_MOYENNE|plus{#GET{pop}})]})]
            </BOUCLE_pop_articles>
            <BOUCLE_pop_docs(DOCUMENTS){notation} {id_mot}>
                    [(#SET{pop,[(#NOTATION_MOYENNE|plus{#GET{pop}})]})]
            </BOUCLE_pop_docs>
            [(#GET{pop}|>{[(#GET{max})]}|oui)
                    [(#SET{max,[(#GET{pop})]})]
            ]
    </BOUCLE_maxmot>
    <ul class="nuage">
    <BOUCLE_tags(MOTS){id_groupe==^((#ENV{id_groupe,.*}))$} {id_groupe!==^((#ENV{notid,-1}))$} {par num titre,titre}>
        [(#REM) définir les mot exposés]
        #SET{expose,''}
        <BOUCLE_expose(ARTICLES){id_article}{id_mot}{0,1}>
            #SET{expose,' '}
        </BOUCLE_expose>
        <BOUCLE_exposedocs(DOCUMENTS){id_document}{id_mot}{0,1}>
            #SET{expose,' '}
        </BOUCLE_exposedocs>
        [(#ENV{id_mot}|=={#ID_MOT}|oui)
            #SET{expose,' '}
        ]
    
        #SET{pop,0}
        <BOUCLE_popularite_article(ARTICLES){notation} {id_mot}>
            [(#SET{pop,[(#NOTATION_MOYENNE|plus{#GET{pop}})]})]
        </BOUCLE_popularite_article>
        <BOUCLE_popularite_document(DOCUMENTS){notation} {id_mot}>
            [(#SET{pop,[(#NOTATION_MOYENNE|plus{#GET{pop}})]})]
        </BOUCLE_popularite_document>
    
     <li[(#GET{expose}|oui) class="expose"]>
      <span class="frequence">
        [(#GET{pop})/#GET{max}]
      </span>
      <a rel="tag" href="#URL_MOT" class="nuage[(#GET{pop}|nuage_note{#GET{max},10})] [(#GET{expose}|oui) on]">#TITRE</a>
     </li>
    </BOUCLE_tags>
    </ul>
    </B_tags>#SET{max,0}
    <BOUCLE_maxmot(MOTS) {id_groupe==^((#ENV{id_groupe,.*}))$} {id_groupe!==^((#ENV{notid,-1}))$}>
            #SET{pop,0}
            <BOUCLE_pop_articles(ARTICLES){notation} {id_mot}>
                    [(#SET{pop,[(#NOTATION_MOYENNE|plus{#GET{pop}})]})]
            </BOUCLE_pop_articles>
            <BOUCLE_pop_docs(DOCUMENTS){notation} {id_mot}>
                    [(#SET{pop,[(#NOTATION_MOYENNE|plus{#GET{pop}})]})]
            </BOUCLE_pop_docs>
            [(#GET{pop}|>{[(#GET{max})]}|oui)
                    [(#SET{max,[(#GET{pop})]})]
            ]
    </BOUCLE_maxmot>
    <ul class="nuage">
    <BOUCLE_tags(MOTS){id_groupe==^((#ENV{id_groupe,.*}))$} {id_groupe!==^((#ENV{notid,-1}))$} {par num titre,titre}>
        [(#REM) définir les mot exposés]
        #SET{expose,''}
        <BOUCLE_expose(ARTICLES){id_article}{id_mot}{0,1}>
            #SET{expose,' '}
        </BOUCLE_expose>
        <BOUCLE_exposedocs(DOCUMENTS){id_document}{id_mot}{0,1}>
            #SET{expose,' '}
        </BOUCLE_exposedocs>
        [(#ENV{id_mot}|=={#ID_MOT}|oui)
            #SET{expose,' '}
        ]
    
        #SET{pop,0}
        <BOUCLE_popularite_article(ARTICLES){notation} {id_mot}>
            [(#SET{pop,[(#NOTATION_MOYENNE|plus{#GET{pop}})]})]
        </BOUCLE_popularite_article>
        <BOUCLE_popularite_document(DOCUMENTS){notation} {id_mot}>
            [(#SET{pop,[(#NOTATION_MOYENNE|plus{#GET{pop}})]})]
        </BOUCLE_popularite_document>
    
     <li[(#GET{expose}|oui) class="expose"]>
      <span class="frequence">
        [(#GET{pop})/#GET{max}]
      </span>
      <a rel="tag" href="#URL_MOT" class="nuage[(#GET{pop}|nuage_note{#GET{max},10})] [(#GET{expose}|oui) on]">#TITRE</a>
     </li>
    </BOUCLE_tags>
    </ul>
    </B_tags>

    Reply to this message

  • Bonjour à tous,
    j’utilise spip 2.1.9 et le squelette eva-web 4. Depuis la mise à jour de spip (version 2.1.9) je ne peux plus paramétrer le nombre de mots-clés dans le nuage par l’intermédiaire de cfg. (il les affiche tous, quoi je choisisse entre 0 et 1) : d’où peut venir le problème ? D’autre part, Eva-web a par défaut une liste de mots-clés bien utiles mais que je ne souhaite pas voir apparaître dans le nuage : comment les exclure ? Un grand merci d’avance à ceux/celles qui auraient une solution à proposer.

    Reply to this message

  • Bonjour à tous,

    Le plugin fonctionne très bien avec SPIP 2.1.10 ... si vous avez ACTIVÉ les STATISTIQUES dans l’espace privé !!!

    En effet, le modèle nuage popularité appelle la balise #POPULARITE d’un article qui ne fonctionne que si les statistiques de visites sont activées, de préférence depuis plus d’un jour.
    Hors avec les statistiques ne sont plus activées par défaut dans les distrib récentes de spip, il faut se rendre sur la page : ..../ecrire/?exec=config_fonctions

    J’espère que ça pourra aider, moi j’ai mis 3h à comprendre d’où venait le problème !!!

    julie

    Reply to this message

  • 22

    hey!!
    ne semble pas fonctionner sous spip 2.1.9...

    • j’ai un site sous spip 2.1.9 (enfin 2.1.10 mais c’est la même chose) avec lequelle il fonctionnne parfaitement.

      Qu’avez vous fait ?

    • ba en faite j’ai mes mots clés qui s’affichent donc un qui a 7 articles rattachés à l’un d’eux
      et tous mes mots clés ont la meme taille, taille standard...
      ils sont tous à une frequence 0..

    • quel modèle utilisez vous ?

      il faut utiliser nuage_popularite et non pas nuage …

    • «[(#MODELEnuage)]»

    • j’ai utilisé
      nuage_popularite
      j’ai vidé le cache et j’ai toujours mes mots clés mis l’un à la suite des autres..

    • auriez vous un site exemple ?

      avez vous bien la balise #INSERT_HEAD dans vos squelettes

    • oui j’ai le #INSERT_HEAD....

    • ce que j’ai :
      c’est la classe “nuage0” pour tous mes mots clés alors que j’ai un mot clé qui est attaché à 7 articles...

      j’ai joint un imp ecran de ce que ça donne..

    • pourriez vous m’envoyer l’adresse ?

      là je suis très étonnée …

    • arfff c’est un site en dev jpeux pas...

      quand j’utilise firebug pour voir ce qu’il y a dans le head, il n’y a rien qui concerne ce plugin
      il devrait y avoir quoi?

    • ah si pardon ya ça
      <link rel='stylesheet' href='spip.php?page=nuage_style.css' type='text/css' media='all' />
      et c’est tout

    • tres étrange … je sèche

    • :(
      j’aurai ptetre oublié de faire quelque chose
      il a quoi de spécial par rapport aux autres plugins?

    • normalement rien … peut être doit tu juste vérifier les règles avancées (via CFG) mais je ne pens epas.

    • ah bizarre quand je clique sur “cfg” j’ai rien concernant le plugin nuage...
      j’ai que enluminure et socialtag...

    • pour chaque mot il me gener ça :

      <li>
        <span class="frequence">
          0/0
        </span>
        <a rel="tag" href="spip.php?mot2" class="nuage0 ">actu1</a>
       </li>
    • très, trés étrange … je sèche :(

    • tiens j’ai a peu pres le même problème y compris l’absence de gestion dans cfg

      et aussi site en développement

    • même version de spip?

    • version de spip :2.1.10
      avec sarka spip 3.0.3

    • bon et bien le pb a évolué
      cf imp écran
      ce plugin ne marche vraiment pas
      et le hic c’est que je suis obligée d’utiliser ce genre de plugin
      y en a t’il un autre qui fasse à peu près la même chose?

      Merci ebaucoup

    Reply to this message

  • pour ceux chez qui ce plugin marche pas j’ai trouvé cette solution
    http://icp.ge.ch/sem/cms-spip/spip.php?article1139
    fonctionne sous spip 2.1.9

    ;)

    Reply to this message

  • 3

    bonjour,

    comment choisir le nombre de mots affichés dans le nuage ?

    merci pour le coup de main ;)

    • dans ton nuage popularite.html tu as des boucles spip pour afficher les mots clés
      tu devrait ptetre essayer de mettre un critère genre 0,10 ..

    • merci beaucoup pour le coup de main ;)

    • de rien ;)
      t’es sous quel version de spip?
      car avec la mienne ça ne fonctionne pas... :(

    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