[5.1.1] nuage de tags.
bankai
Member
dans Modifications
Voila ce matin j'ai testé tout les code existant pour pouvoir faire un nuage de tag tout en respectant les mises en forme et la validité Xhtml.
Merci à PPmarcel car tout vient de lui.
Il faudra édité votre fichier: core/lib/class.plx.show.php
Nous allons ajouter ce code à la fin du fichier (avant les éléments " } ?>") :
Dans votre panneau d'administration, créez une nouvelle page statique ayant ces propriétés:
Glissez ces 2 lignes dans la page statique obtenu en appuyant sur éditer puis voir pour verifié que les tags s'affichent correctement :
juste rendu valide au normes W3C Xhtml strict 1.1
Merci PP ;)
Solution d'attente du Tagcloud officiel ^^(message subliminal pour Stéphane )
Merci à PPmarcel car tout vient de lui.
Il faudra édité votre fichier: core/lib/class.plx.show.php
Nous allons ajouter ce code à la fin du fichier (avant les éléments " } ?>") :
/**
* Méthode qui affiche un nuage de tags.
* (inspiré de http://www.bytemycode.com/snippets/snippet/415/ )
* @param max nombre maxi de tags à afficher
* @author PPmarcel
**/
public function tagCloud($max) {
$time = @date('YmdHi');
$array=array();
# On verifie qu'il y a des tags
if($this->plxMotor->aTags) {
# On liste les tags sans créer de doublon
foreach($this->plxMotor->aTags as $tag) {
if($tag['date']<=$time AND $tag['active']) {
if($tags = array_map('trim', explode(',', $tag['tags']))) {
foreach($tags as $tag) {
if($tag!='') {
if(!isset($array[$tag]))
$array[$tag]=1;
else
$array[$tag]++;
}
}
}
}
}
}
uksort($array, create_function('$a, $b', 'return strcasecmp($a,$b);'));
if(intval($max)>0) $array=array_slice($array, 0, $max);
$font_max_size = 32;
$font_min_size = 12;
$tags_max_qty = max(array_values($array));
$tags_min_qty = min(array_values($array));
$tags_spread = $tags_max_qty - $tags_min_qty;
if ($tags_spread == 0) { // Evitons la division par 0
$tags_spread = 1;
}
// Parametrage de l'incrementation
$tags_step = ($font_max_size - $font_min_size) / ($tags_spread);
foreach($array as $tagname => $nbtags) {
$tags_font_size = round($font_min_size + (($nbtags - $tags_min_qty) * $tags_step));
$t = plxUtils::title2url($tagname);
$tag_url = $this->plxMotor->urlRewrite('?tag/'.$t);
$tag_status = $this->plxMotor->cible==$t?'active':'noactive';
$tag_name = plxUtils::strCheck($tagname);
$nb_art = $nbtags;
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>;";
}
}
Lister tous les tags en page statiqueDans votre panneau d'administration, créez une nouvelle page statique ayant ces propriétés:
Glissez ces 2 lignes dans la page statique obtenu en appuyant sur éditer puis voir pour verifié que les tags s'affichent correctement :
<?php global $plxShow;
$plxShow->tagCloud($max='300'); ?>
Puis dans votre sidebar (ou le footer cela dépendra de vous et de votre CSS)<p><?php $plxShow->tagCloud($max='45'); ?></p>
<p><a href="VOTRE URL/?static7/alltags" title="Tous les tags">[ Tous les tags ]</a></p>
Je rappelle que ce code vient de PPmarcel a cette adresse: http://forum.pluxml.org/viewtopic.php?id=1822juste rendu valide au normes W3C Xhtml strict 1.1
Merci PP ;)
Solution d'attente du Tagcloud officiel ^^(message subliminal pour Stéphane )
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
une idée ?
http://refok.free.fr/
tu peux tester si tu veux, ça fonctionne
et j'attendais bien après car un peu plus sympa que la liste 'verticale' qui prend un peu trop de place
mes sites principaux : fonds d'écran gratuits - longue traîne - référencer votre site - brocante en ligne -
Pour simplifier, j'ai modifié la dernière ligne comme ceci : Pour le ";", je pense que c'est un héritage de <?php $plxShow-> artTags( ); ?> ?
Bankai, tu as un ";" de trop dans ton echo. Il suffit de le supprimer et tout redevient nickel.
Il faut remplacer par
Merci de ton retour l'ami.
Merci bankai pour l'adaptation
voila juste un retour positif sur la perso de notre CMS favori
J'explore encore les nouveautés (surtout les plugins) et est il prévu d'inclure le nuage dans un futur plugin officiel ?
mais il est vrai que c'est bien utile
mes sites principaux : fonds d'écran gratuits - longue traîne - référencer votre site - brocante en ligne -
edit : et oui un gros +1 pour ppmarcel l'auteur du nuage initial
Après avoir suivi le mode opératoire de Bankai et en intégrant les modifications de Bloody, je suis enfin arrivé à faire ce fameux nuage de mots-clefs. Merci.
Cependant, j'ai deux petits soucis à régler avant la mise en ligne :
1 - l'affichage de la page statique "tous les tags" met à l'écran "; tagCloud($max='300'); ?>". Je n'arrive pas à voir le problème.
2 - le clic sur l'un des tags affiche bien les articles associés. Mais après, lorsque je clique sur Accueil, le "filtre du tag reste actif et je n'arrive pas à retrouver la vraie page d'accueil du site.
Si quelqu'un a une idée ... merci.
A+
Philippe.
Mais le problème 1 reste actuel.
En conséquence il serait superbe de ne pas avoir toujours les mêmes tags dans la sidebar, la fonction devrait prendre les tags de façon aléatoire .
Personnellement j'affiche 20 tags dans la sidebar, mais ces tags sont toujours les mêmes , y a pas moyen de les changer via un tri (rand).
C'est juste une idée car je n’ai pas suffisamment de connaissances en php pour le faire.
Dans tous les cas je vous remercie pour le travail déjà effectué.
Pour ma part j'ai temporairement délaissé mes activités en 2011. J'étais même persuadé que le nuage de tags était désormais intégré à PluXML. ^_^'
Stéphane et les contributeurs du projet ont en tout cas fais un gros effort en intégrant un système de plugin. Ce serait une bonne idée d'évolution de convertir le nuage en plugin, ce qui le rendrait plus accessible à tous les utilisateurs de PluXML.
Je tâcherais de regarder ça de plus près d'ici quelque temps, mais si toi (Bankai) ou quelqu'un autre est motivé (et plus rapide), n'hésitez pas à vous lancer.
il y a une version légèrement différente sur le site du lapin bleu.
On l'a testé avec les mots-clefs de bankaï.
Le pb est qu'à la vue du nombre de mots-clefs il n'y avait pas assez de récurrences pour les classés en 4-5 groupes.
L'avantage du tient est que la taille des caractères varie de 12 à 24px, donc plus de groupes = plus de variantes.
L'idéal serait d'associer un style plutôt qu'une taille ( modif assez facile à faire d'ailleurs mais pas le temps pour le moment.)
Cordialement,
Soit ajouter le code de bankai à core/lib/class.plx.show.php (avec la dernière ligne modifiée par Bloody http://forum.pluxml.org/viewtopic.php?pid=19888#p19888 ) et créer la page statique avec le code donné par bankai ?
La 3è étape sert à quoi (le code à ajouter "dans votre sidebar (ou le footer cela dépendra de vous et de votre CSS)") ?
J'ai suivi les étapes 1 et 2 mais ça ne marche pas.... cf http://libre-ouvert.toile-libre.org/index.php?static11/alltags
Merci d'avance
Tout d'abord merci pour ce cms génial.
J'ai mis en place la page nuage de mots clés qui fonctionne parfaitement sur pluxml 5.1.5.
Je n'ai fait aucune autre modification sauf celles indiquées or depuis j'ai un message d'erreur :
Warning: Cannot modify header information - headers already sent by (output started at /(...)/core/lib/class.plx.show.php:1) in /(...)/index.php on line 67
Je n'ai pas modifié l'index pouvez-vous m'aider à apporter la correction nécessaire ?
Remerciements