Gérer un nuage de tag

Publié le 11 avril 2007 | 0 commentaire(s) | Tags : navigation |

Etant un blog, je me suis dit qu'il me fallait un nuage de tag, digne de ce nom, contrairement à la liste très homogène qu'il y avait avant.

J'ai donc cherché un système , en modifiant quelques templates eZ publish pour que tout marche parfaitement.

J'ai modifié principalement deux templates, le premier qui récupère la liste des différents tags présents sur le site. Je n'ai malheuresement pas trouvé comment faire pour trouver le tag qui avait le plus de billets en dessous de lui, sans passer par une seconde boucle.

Voici le code final qui me permet de lister mes tags :

{def $max_pop = 0
    $tag_children = fetch(content, list,
                  hash(parent_node_id, 62,
                  class_filter_type, include, 
                  class_filter_array, array('tag'),
                  sort_by,
                  array( array(priority,true()),
                  array(name,true())
   )))
}
 
{foreach $tag_children as $child}
                    {if $child.children_count|gt($max_pop)}
                        {set $max_pop = $child.children_count}
                    {/if}
                {/foreach}
 
    {foreach $tag_children as $tag_child}
        {node_view_gui content_node=$tag_child view=view maxpop=$max_pop base=0}
    {/foreach}
{undef $max_pop $tag_children}
 

J'ai ensuite modifié l'affichage de mes tags en conséquence. Je modifie la taille des liens, en utilisant des pourcentages. J'ai aussi définit la règle suivante. Le tag, ayant le plus de billets ratachés, sera mit en gras. Voici le template utilisé :

{if $node.children_count|gt(0)}
{def $score = sum( ceil( mul( div($node.children_count,$maxpop), 100)), $base)}
       <a style="font-size:{$score}%;
{if $node.children_count|eq($maxpop)}font-weight:bold;{/if}
" href={$node.url_alias|ezurl}>{$node.name|upfirst}
{undef $score}
{/if}
 

Au fur et à mesure que je découvre eZ publish , je trouverais peut etre une meilleure façon pour afficher mon nuage de tags.

Bookmark and Share

Ajouter un commentaire

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2010 eZ Systems AS (except where otherwise noted). All rights reserved.