Nuage de tags
Jerry Wham
Member
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 :
Et pour le format d'appel de la fonction, à la place de :
Cela permettrait d'avoir une classe css pour chaque fréquence, limitée à 11 classes différentes. Par exemple :
Z'en pensez quoi ?
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 ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
J'en pense que du bien.
A tester, à valider. Si ok: adopter
Consultant PluXml
Ancien responsable du projet (2010 à 2018)
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 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.
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.
Remplace les points-virgules par des virgules simples pour voir ...
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
<?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.
Je te laisse voir le résultat:
http://www.arboretum-yffiniac.info/blog/
Au plaisir de te relire
#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.
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
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.
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.
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.
- 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)
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…
En utilisant bien sur sous la version 5.1.7.
Merci d'avance pour ce pauvre Bankai qui sèche ^^