DSC_0426.jpg DSC_0001.jpg DSC_0462.jpg

 i need more coffee

Atteint depuis mon plus jeune âge d'hippopotomonstrosesquippedaliophobie (cultivez vous ça ne fera pas de mal) j'ai décidé de faire un blog sur ma maladie (be feeeaar..).
Blague à part c'est un blog totalement axé génie logiciel que vous trouverez ici. Du PHP, du J2EE, et évidement toutes les technologies qui leur sont liées.

Have fun !

Générer un bon nuage de tag dans cmsmadesimple

6 février 2012Posté par : Kevin Danezis dans CmsMadeSimple

Petit article sur la manière d'implémenter un nuage de tag tel que celui visible dans la colonne de droite du site.

Le plugin qui permet d'obtenir un tel effet s'appel tagcloud. Il est évidement disponible sur la forge de cmsmadesimple sous la forme d'un simple fichier php.

L'installation est très facile puisqu'il suffit de placer de fichier dans le répertoire ./plugins de votre installation cmsmadesimple. Une fois copié, le programme est prêt à l'emploi dans vos gabarits.

Exemple d'utilisation

La documentation du plugin est plutôt bien fouttue mais exclusivement anglaise ce qui provoque parfois un petit tatonement avant d'obtenir ce que l'on désire précisememnt.

Dans mon cas j'ai utilisé ce code :

{tagcloud link_title='Rechercher %WORD% sur ce site | %COUNTS% élements' width='250px'  css_style=' ' clean_urls='true' returnid='69' fontsize_function="LOG"}

Voici l'explication de ces paramètres utilisés

  • link_title : c'est le contenu de l'attribut title de la balise lien <a/> qui prend les paramètres %WORD% et %COUNT% pour personnaliser l'affichage.
  • width : définit bien évidement la largeur du bloc global
  • clean_urls : permet l'utilisation des pretty-url. Doit s'accompagner d'une règle de ré-écriture dans votre fichier .htaccess (exemple présent dans la doc du plugin)
  • returnid : lorsque vous cliquez sur un lien, une page s'ouvre avec les résultats. Cette page porte un gabarit (comme toute les pages) et le meilleur moyen de définir ce gabarit il suffit de définir ici l'ID de la page de destination.
  • fontsize_function : la fonction mathématique qui déterminera la hauteur des textes selon la fréquence. J'ai utilisé LOG à la place de LINEAR car certains mots très très réccurent rendait tous les autres résultats minuscules... avec LOG on revient à un ensemble de texte plus réaliste.
  • css_style : la partie qui m'aura bien fait ch**r... le style étant généré à la volée ET au cas par cas, il est impossible de tout externaliser dans un fichier css (couleur, taille). Par contre j'ai remarqué que certains attributs css étaient constant : police d'écriture, ... J'ai donc cherché à externaliser un maximum de code et l'aide de la balise donnait donc css_style comme solution.. c'est après de nombreux essai que j'ai compris qu'il fallait un espace dans ce paramètre pour que le paramètre soit prit en compte et qu'il comprenne enfin que l'on ne souhaite pas qu'il spécifie lui même le CSS standard. La taille du code HTML entre les deux cas de figure, avec style interne et avec style externalisé, est bien différent... et pas qu'un peu !

A l'inverse de ces paramètres, ce plugin possède quelques paramètres à utiliser avec soin, j'ai notamment bloqué sur l'un d'entre eux

  • content_type : this defines the type of the content the tagcloud is based upon. You can use "news" or "pages". Standard is not defined so both content types get involved in the tagcloud.

Là où j'ai bloqué un moment c'est que les paramètres sont SOIT news SOIT pages mais pas les deux en même temps (pour cela il suffit de rien mettre). J'ai cru a tord que d'autres type de contenu étaient filtrable (global_content notemment).. et bien non...

A l'usage

Ce module s'appuie sur les résultats de recherche du module Search. L'un des principaux inconvénient de Search c'est que par défaut il filtre certains mots en anglais (i, you, we, ...) mais absolument pas en français. J'ai donc du redéfinir moi même une liste cohérente de mot à exclure dans les résultats de Search et donc par extension dans les affichages du plugin tagcloud. Ca peut soit se faire avec un paramètre du plugin (mais voilà la galère pour maintenir cette liste) soit dans Search directement dans l'onglet option. Voici mon filtre actuel qui évidement évolura avec le temps.

à, ai, aie, aient, aies, ait, alors, as, au, aucuns, aura, aurai, auraient, aurais, aurait, auras, aurez, auriez, aurions, aurons, auront, aussi, autre, aux, avaient, avais, avait, avant, avec, avez, aviez, avions, avoir, avons, ayant, ayez, ayons, bon, ça, car, ce, ceci, cela, ces, cet, cette, ceux, chaque, ci, comme, comment, dans, de, début, dedans, dehors, depuis, des, deux, devrait, doit, donc, dos, droite, du, elle, elles, en, encore, es, essai, est, et, étaient, étais, était, étant, état, été, êtes, étions, être, eu, eue, eues, eûmes, eurent, eus, eusse, eussent, eusses, eussiez, eussions, eut, eût, eûtes, eux, fait, faites, fois, font, force, fûmes, furent, fus, fusse, fussent, fusses, fussiez, fussions, fut, fût, fûtes, haut, hors, ici, il, ils, je, juste, la, là, le, les, leur, leurs, lui, ma, maintenant, mais, me, même, mes, mine, moi, moins, mon, mot, ne, ni, nommés, nos, notre, nous, nouveaux, on, ont, ou, où, par, parce, parole, pas, personnes, peu, peut, pièce, plupart, pour, pourquoi, qu, quand, que, quel, quelle, quelles, quels, qui, sa, sans, se, sera, serai, seraient, serais, serait, seras, serez, seriez, serions, serons, seront, ses, seulement, si, sien, soi, soient, sois, soit, sommes, son, sont, sous, soyez, soyons, suis, sujet, sur, ta, tandis, te, tellement, tels, tes, toi, ton, tous, tout, très, trop, tu, un, une, valeur, voie, voient, vont, vos, votre, vous, vu, c'est, temps, ainsi, d'une, très, simple, j'ai, plus, passé, bien, d'un, xxx, faire, http, images, the, même, www, test, toutes, mise, l'on, type, passe, jour, évidement, voici, permet, lorsque, selon, toute, cas, quelques,

Edit 4 avril 2013 : mise à jour de la liste des mots exclus chez moi

comments powered by Disqus