Nuage de tags

Jerry WhamJerry Wham Member
mai 2012 modifié dans Modifications
Bonjour,

Je me demandais s'il est possible de modifier le format par défaut de la méthode tagList de la class plxShow afin que l'on puisse y ajouter une classe css pour avoir un affichage différent en fonction de la fréquence d'utilisation des tags?

Je l'ai fait par l'intermédiaire d'un plugin, mais ça me semble lourd pour quelque chose qui pourrait être prévu nativement.

Ce que j'avais dans l'idée se résume au code suivant à placer dans la boucle foreach de fin de fonction :
if ($tag['count'] > 10) $freq = 'max';
else $freq = $tag[count];

$name = str_replace('#tag_link','tag-link-'.$freq,$name);
echo $name;

Et pour le format d'appel de la fonction, à la place de :
$plxShow->catList('<a href="#tag_url" title="#tag_name">#tag_name</a>',20);
utiliser :
$plxShow->catList('<a href="#tag_url" class="#tag_link" title="#tag_name">#tag_name</a>',20);

Cela permettrait d'avoir une classe css pour chaque fréquence, limitée à 11 classes différentes. Par exemple :
.tag-link-1 {font-size : 10pt;}
.tag-link-2 {font-size : 12pt;}
.tag-link-3 {font-size : 14pt;}
.tag-link-4 {font-size : 16pt;}
.tag-link-5 {font-size : 18pt;}
.tag-link-6 {font-size : 20pt;}
.tag-link-7 {font-size : 22pt;}
.tag-link-8 {font-size : 24pt;}
.tag-link-9 {font-size : 26pt;}
.tag-link-10 {font-size : 28pt;}
.tag-link-max {font-size : 30pt;}

Z'en pensez quoi ?

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Salut

    J'en pense que du bien.
    A tester, à valider. Si ok: adopter :)

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Cool :)
  • Bonjour à tous,
    Je prend la discussion tardivement, mais comme petit nouveau, je viens d'installer ce module qui fonctionne parfaitement bien.
    Ma question: peut-on supprimer les points-virgules ( ; ) entre chaque mots ?
    Au plaisir de vous lire.
    Patrick
  • Si je ne m'abuse, les points-virgules n'apparaissent pas au final. Ils sont là uniquement pour séparer chaque tag.

    Si on les enlevait, il faudrait prendre comme séparateur les espaces. Ce qui supprimerait le fait qu'un tag puisse être composé de plusieurs mots.
  • D'apres mes tests sur la 5.1.7 et ce bout de code sur le thème que je prépare, les points virgules n'apparaissent pas car, si je ne trompe pas, en PHP çà indique la fin d'une commande.
  • PatrickBPatrickB Member
    décembre 2012 modifié
    Bonjour Jos et Jerry,
    et merci pour vos réponses.
    Les points-virgules apparaissent bien sur le nuage de tags en page d'accueil, comme vous pouvez le voir ici:

    http://arboretum-yffiniac.info/blog/

    et ce sont ceux là que je voudrais faire disparaitre.

    Cordialement.
  • Tiens un voisin ! (22950)

    Remplace les points-virgules par des virgules simples pour voir ... ;)
  • AirW a écrit:
    Tiens un voisin ! (22950)

    Remplace les points-virgules par des virgules simples pour voir ... ;)
    Bonjour voisin,
    Merci pour ta réponse, mais la séparation des mots clé se fait déjà avec des virgules.
    Il y a possibilité de ne pas les affichés, comme vu sur le site de PPMarcel: http://blog-marcel.eu/index?static3/alltags
    Patrick
  • Essai de mettre çà :


    <?php $plxShow->tagList('<span class="#tag_size #tag_status"><a href="#tag_url" title="#tag_name">#tag_name</a></span>   ', 20); ?>


    J'ai mis 3 espaces entre chaque mots.
  • Bonjour Jos et merci de ta réponse.
    Je te laisse voir le résultat:
    http://www.arboretum-yffiniac.info/blog/
    Au plaisir de te relire
  • Il ne te reste plus qu'à définir un largeur dans ta div sitebar. Par exemple :


    #sidebar {width: 300px;}


    A adapter selon la largeur voulu. Cela devrait te permettre d'éviter que les mots clés et les éléments de ta sidebar aillent jusqu'au bout de la largeur de ta page.
  • Bloody a écrit:
    Pardon, je suis allé un peu vite. :P

    Bankai, tu as un ";" de trop dans ton echo. Il suffit de le supprimer et tout redevient nickel. :)

    Il faut remplacer
    echo "<a class=\"$tag_status\" href=\"$tag_url\" style=\"font-size:${tags_font_size}px\" title=\"$nb_art articles avec le tag $tag_name\"> $tag_name </a>;";
    
    par
    echo "<a class=\"$tag_status\" href=\"$tag_url\" style=\"font-size:${tags_font_size}px\" title=\"$nb_art articles avec le tag $tag_name\"> $tag_name </a>";
    

    Bon, je viens de parcourir le forum avec plus d'attention, et j'ai trouvé la solution dans :
    http://forum.pluxml.org/post.php?tid=2528&qid=19888 (dont la citation ci-dessus).

    Tout est ok.
    Merci de vos réponses
    Patrick
  • LunaticLunatic Member
    janvier 2013 modifié
    Bonjour à tous,


    Si je comprends bien la modification proposée par Jerry, la taille des tags est calculée de manière absolue, et non pas relative, c'est bien cela (avec un max fixé à 10) ? C'est-à-dire que si le tag le moins utilisé a été employé 15 fois, il sera aussi « gros » que le tag le plus utilisé (en fait, ils auront dans ce cas tous la même taille) ?


    Merci pour vos éclaircissements.


    Edit : ortho.
  • JosJos Member
    La prochaine version de PluXML intègrera des tags de différentes tailles.
  • LunaticLunatic Member
    janvier 2013 modifié
    Ouaip, j'avais bien compris :-) Ma question portait justement sur la méthode de calcul des tailles.
  • JosJos Member
    Tu peu toujour aller jeter un oeil sur le GitHub de PluXML pour voir cette fonction :


    https://github.com/pluxml/5.1.7/blob/master/core/lib/class.plx.show.php


    Je pense que sa se passe à partir de la ligne 1405 (fonction tagList). Les tailles sont ensuite stylisé en CSS.
  • Lunatic a écrit:
    Bonjour à tous,


    Si je comprends bien la modification proposée par Jerry, la taille des tags est calculée de manière absolue, et non pas relative, c'est bien cela (avec un max fixé à 10) ? C'est-à-dire que si le tag le moins utilisé a été employé 15 fois, il sera aussi « gros » que le tag le plus utilisé (en fait, ils auront dans ce cas tous la même taille) ?


    Merci pour vos éclaircissements.


    Edit : ortho.

    Oui c'est ça. C'est pour éviter d'avoir un tag avec une taille énorme s'il est consulté des milliers de fois. Il faut bien à un moment fixer une limite.

    Si tu tiens absolument à différencier la taille de celui qui est consulté 10 fois de celui consulté 15 fois, il suffit de le faire en css.
  • StéphaneStéphane Member, Former PluXml Project Manager
    voilà le principe appliqué pour le nuage de tags dans PluXml 5.1.7 (bientôt dispo)

    - si un tag est utilisé 1 fois, on lui affecte la classe css tag-1 où par ex la taille du texte est de 10px
    - si un tag est utilisé 2 fois, on lui affecte la classe css tag-2 où par ex la taille du texte est de 12px
    - si un tag est utilisé 3 fois, on lui affecte la classe css tag-3 où par ex la taille du texte est de 14px
    etc...
    - si un tag est utilisé + de 10 fois, on lui affecte la classe css tag-10 où par ex la taille du texte est de 28px

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • LunaticLunatic Member
    janvier 2013 modifié
    Merci pour vos éclaircissements/confirmations.


    Effectivement, il n'est pas bien compliqué de modifier le css et/ou le morceau de code pour changer les paliers.


    Je me demande toutefois s'il n'est pas plus pertinent d'utiliser des paliers relatifs et non pas absolus, c'est-à-dire qu'on calcule la taille en fonction de celle du tag le moins utilisé et du tag le plus utilisé.


    Je ne sais pas si je suis très clair donc voici une petite illustration :
    - on attribue la taille 10 au tag le plus utilisé. Disons qu'il est utilisé nb_max fois
    - on attribue la taille 1 au tag le moins utilisé. Disons qu'il est utilisé nb_min fois


    Du coup, la taille « x » de notre tag est :


    ( (9 × ( nb_tag - nb_min ) ) / (nb_max - nb_min) ) + 1


    (Enfin, si mon calcul est juste :P)


    Maintenant, j'avoue ne pas savoir s'il est aisé de déterminer nb_max et nb_min…
  • Question, quel est le code à mettre dans une page statique pour pouvoir avoir tout les tags ?
    En utilisant bien sur sous la version 5.1.7.

    Merci d'avance pour ce pauvre Bankai qui sèche ^^
Connectez-vous ou Inscrivez-vous pour répondre.