Taglist - Choisir quels mots clés afficher
Bonjour chers Pluxmleurs ![]()
Je me demandais si la fonction tagList était personnalisable pour n'afficher que certains mots clés ?
En effet, je souhaite pouvoir choisir précisément quels mots clés afficher sur tel ou tel page, de la même façon qu'avec catList.
Et si ce n'est pas possible, comment faire un lien vers un mot clé particulier ?
D'avance merci!
0
Connectez-vous ou Inscrivez-vous pour répondre.

Réponses
Bonsoir,
Non, mais cette fonction dispose d'un hook qui permettrait de retravailler le tableau des mots clés avant affichage.
Est ce que 'certains mots clés' ne serait que ceux de l'article en cours ? Dans ce cas les fonctions d'affichage des tag de l'article conviendrait.
J'imagine que c'est plus subtile que ça et dans ce cas c'est un plugin qu'il faudrait avec une page configuration.
Cordialement,
gcyrillus , simple membre du forum et utilisateur de PluXml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci
Merci pour la réponse.
Je cherche à afficher une liste de mots clés pour afficher les articles liés à ces mots clés.
Comme une sorte de menu en fait. Mais je souhaite cacher certains mots clés dans cette liste, et aussi pouvoir choisir l'ordre d'affichage.
D'ailleurs, je me disais que ça serait pas mal que PluXml propose en "natif" une gestion en backoffice des mots clés, au même titre que les catégories ? Le plugin TagOptions fait le job en attendant
Est-ce que ça serait éventuellement possible d'avoir un exemple de hook pour triturer la fonction PlxShow->tagList ?
Merci !
Oui, comme tu utilises le pluginTagOptions et que celui ci a déjà ce hook en reserve, je te propose de tester en local cette exemple
L'idée est d'avoir un tableau pour les tags choisis (ou pas) et comparé les tags extrait à ceux autorisés, si il y a quelque chose dans le tableau on compare . on saute au tag suivant si il n'est pas dans la liste. Si la liste est vide, on prend tout.
Il faut penser à mettre cette variable dans le thème pour son fonctionnement par défaut , je lui donne comme nom $tagFilter et la laisse vide ('',0, ou false renvoient vide au test empty() )
<ul class="tag-list"> <?php $plxShow->tagList('<li class="tag #tag_size"><a class="#tag_status" href="#tag_url" title="#tag_name">#tag_name</a></li>', 20, $tagFilter=''); ?> </ul>Et le hook de test rempli devient
/** * Méthode plxShowTagList * * Descrition : * @author : TheCrok * **/ public function plxShowTagList() { # code à executer echo self::BEGIN_CODE; ?> // here the code to inject into native function at hook's position // return true; // use if needed : stops native function at this point /*POC prevoir une page de config pour chaque article et stocker les tags autorisés dans un tableau que l'on renvoi dans la variable $tagFilter ne pas oublier d'initialiser la variable dans le thème : < ?php $plxShow->tagList('<li class="tag #tag_size"><a class="#tag_status" href="#tag_url" title="#tag_name">#tag_name</a></li>', 20, $tagFilter=''); ? > exemple avec les mots clés*/ $tagFilter = array('pluxml', 'plugins'); # On verifie qu'il y a des tags if ($this->plxMotor->aTags) { $now = date('YmdHi'); # On liste les tags sans créer de doublon $counters = array(); foreach ($this->plxMotor->aTags as $idart => $tag) { if (isset($this->plxMotor->activeArts[$idart]) and $tag['date'] <= $now and $tag['active']) { if ($tags = array_map('trim', explode(',', $tag['tags']))) { foreach ($tags as $tag) { if (!empty($tag)) { if(!empty($tagFilter) && !in_array(strtolower($tag), $tagFilter)) { continue;} //// Le tri se fait ici if (!array_key_exists($tag, $counters)) { $counters[$tag] = 1; } else { $counters[$tag]++; } } } } } } # tri des tags switch ($order) { case 'alpha': # Le tri alpha se fait sur la clé ksort($counters); # éventuellement uksort pour tri spécifique sur $tag break; case 'random': $keys = array_keys($counters); shuffle($keys); $arr_elem = array(); foreach ($keys as $key) { $arr_elem[$key] = $counters[$key]; } $counters = $arr_elem; break; default: arsort($counters); } # limite sur le nombre de tags à afficher if ($max != '') $counters = array_slice($counters, 0, intval($max), true); # Recherche de la valeur maxi pour $counters. A multiplier par 10. $max_value = array_reduce( array_values($counters), function ($lastValue, $value) { return ($lastValue > $value) ? $lastValue : $value; }, 0 ); $max_value *= 0.1; # Pour faire varier la taille des caractères de 1 à 11; $mode = $this->plxMotor->mode; # Récupération de la liste des tags de l'article si on est en mode 'article' # pour mettre en évidence dans la sidebar les tags attachés à l'article $artTags = array(); switch ($mode) { case 'article': $artTagList = $this->plxMotor->plxRecord_arts->f('tags'); if (!empty($artTagList)) { $artTags = array_map('trim', explode(',', $artTagList)); } break; case 'home': foreach ($this->plxMotor->plxRecord_arts->result as $record) { foreach (array_map('trim', explode(',', $record['tags'])) as $tag) { if (!in_array($tag, $artTags)) { $artTags[] = $tag; } } } } # On affiche la liste $id = 0; foreach ($counters as $tag => $counter) { $url = plxUtils::urlify($tag); $status = 'noactive'; switch ($mode) { case 'article': if (in_array($tag, $artTags)) { $status = 'active'; } break; case 'tags': $status = ($this->plxMotor->cible == $url) ? 'active' : 'noactive'; } $replaces = array( '#tag_id' => 'tag-' . $id++, '#tag_size' => 'tag-size-' . (1 + intval($counter / $max_value)), # taille des caractères '#tag_count' => $counter, '#nb_art' => $counter, '#tag_item' => $url, '#tag_url' => $this->plxMotor->urlRewrite('?tag/' . $url), '#tag_name' => plxUtils::strCheck($tag), '#tag_status' => $status ); echo str_replace(array_keys($replaces), array_values($replaces), $format); } } return true; // ici on remplace la fonction native avec celle modifiée en arretant ici la fonction <?php echo self::END_CODE; }Cette fonction est extraite de la 5.8.15, modifié pour la comparaison. Elle remplace entièrement la fonction native.
L'extraction se fait en amont. puis la comparaison se fait juste après que l'on à vérifier que nous avons un tag actif, ce test est commun à toutes les versions de Pluxml
Si cela te convient , ils manque l'essentiel, enregistrer pour chaque article les tag que l'on veut choisir. Une page de configuration ou squatter la page d’édition des articles via le hook AdminArticleSidebar.
voilou en esperant que cel t'aide un peu en attendant d'avoir mieux
Cordialement,
gcyrillus , simple membre du forum et utilisateur de PluXml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci
Voici une maj du plugin à tester qui permet de sélectionné quels tags afficher par article https://ressources.pluxopolis.net/banque-plugins/plugins/tagOptions.1.zip
un champ supplémentaire apparait dans la sidebar d'édition de l'article et permet de filtrer les tags à afficher par article . Si laisser vide, pas de filtrage. Penser à y inserer aussi les mots clés de l'article ...
Cordialement,
gcyrillus , simple membre du forum et utilisateur de PluXml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci
Merci beaucoup, je vais tester.
Cependant, est-ce qu'il est possible de choisir précisément l'ordre d'affichage des mots clés dans un menu avec TagList ?
Pour cela, il faudrait que je puisse récupérer les identifiants de chaque tag pour les appeler ensuite dans un menu j'imagine ?
Pour préciser, je ne cherche pas à affiche la liste de tags sur une page article, mais plutôt de proposer un menu permettant de filtrer l'affichage des articles dans une page catégorie.
Okay, je crois comprendre à peu près
Ceci étant, un article peut-être relier à plusieurs catégories et de nombreux tag. Il y a aussi un plugin pour des catégories et sous catégories qui permettrait de filtrer en fonction d'une sous catégorie.
Cordialement,
gcyrillus , simple membre du forum et utilisateur de PluXml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci
Alors je m'explique de façon plus claire
1. J'ai plein d'articles, auxquels sont assignés des mots clés (parfois 1, parfois plus). ex : "musique, dessin, cinéma"
2. J'ai créé, sur la page d'accueil de mon site, une liste de lien vers ces mots clés (fonction tagList)
3. Quand je clique sur un mot clé de cette liste, je me retrouve sur une liste d'articles auxquels j'ai assigné ce mot clé. ex : je clique sur "musique", j'arrive sur la page "musique" listant tout les articles avec le mot clé "musique".
Voici maintenant ce qui est bloquant, ou plutôt embêtant :
Je pense qu'il serait utile de pouvoir gérer les mots clés de la même façon que les catégories, ce qui permettrait :
Merci beaucoup, j'espère que c'est plus clair comme ça

Effectivement, le plugin de sous-catégorie pourrait venir en remplacement, mais je préfère utiliser au maximum les possibilités natives, et ces mots clés sont bien utiles
Pour la liste de mots clés choisis, tu peut déjà le faire avec le plugin en remplissant une variable supplémentaire dans ta page d'accueil ou statique :
<?php $plxShow->tagList('<li class="tag #tag_size"><a class="#tag_status" href="#tag_url" title="#tag_name">#tag_name</a></li>', 20, $tagFilter=''); ?>Il te suffit en principe de mettre dans la variable les mots-clés choisis séparés par une virgule. Pour le tri, à tester si le tri natif suffit, je ne pourrais tester que ce soir après dîner.
Édit : variable injectée :
$tagFilter, utilisable par le pluginCordialement,
gcyrillus , simple membre du forum et utilisateur de PluXml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci
Le tri natif ne suffit pas, car il ne permet que les options suivantes : random, alpha, popularité (si laisser vide)
https://wiki.pluxml.org/docs/develop/plxshow.html#taglist
Par ailleurs, j'ai essayé le $tagFilter, mais ça ne semble pas fonctionner.
Merci encore pour ton aide !
Ah zut, je crois que j'ai zapper en cours de route la gestion de cette variable si injectée dans la fonction pour les autre mode que article. Je regarde ce soir et testerai l'ordre d'affichage.
Cordialement,
gcyrillus , simple membre du forum et utilisateur de PluXml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci
voici une autre modification qui affiche la liste des tags dans l'ordre du filtre https://ressources.pluxopolis.net/banque-plugins/plugins/tagOptions-beta-2.zip
Ajout d'un hook pour passer le filtre dans les fichiers du thème ou une page statique.
exemple
<?php eval($plxShow->callHook('tagOptionList', 'PluXml, tag inconnu, tag connu')) ?> <ul class="tag-list"> <?php $this->tagList('<li class="tag #tag_size"><a class="#tag_status" href="#tag_url" title="#tag_name">#tag_name</a></li>', 20); ?> </ul>Affichera dans $plxShow->tagList() comme liste - PluXml - tag connu
Si un tag n'est pas trouvé, il n'y a pas d''affichage, attention le filtre est sensible à la casse.
Pour réinitialisé les filtres
<?php eval($plxShow->callHook('tagOptionList')) ?> <?php eval($plxShow->callHook('tagOptionList','autre filtre,a appliquer')) ?>Dans une page statique, appeler le hook avec $this
<?php eval($this->callHook('tagOptionList')) ?>A suivre
Cordialement,
gcyrillus , simple membre du forum et utilisateur de PluXml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci
Merci beaucoup, ça fonctionne ! Bravo !

J'ai un beau menu de tags bien rangé maintenant
Une dernière chose : y a t-il un moyen de conserver la hiérarchie de la catégorie active à l'affichage d'une liste de mots clés ?
Que dans mon menu, "portfolio" reste souligné quand on affiche une liste de tags liés à cette catégorie ?
J'imagine que je pourrais passer manuellement cette variable dans mon template de tag ?
Coté plugin, je ne pense pas car nous sommes dans deux mode différents. mais si tu peut probablement faire quelque choses en CSS via le selecteur :has() .
exemple
#sidebar_in:has(#tags li a.active) #cat-9 { border-bottom:3px solid black; }Cela ne marche que pour la categorie 009
Cordialement,
gcyrillus , simple membre du forum et utilisateur de PluXml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci
Ah ben oui, tout simplement... Merci bcp encore !
Un soucis avec le lien "Page d'administration lang" (.../core/admin/plugin.php?p=lang erreur 404) dans l'administration non ? du moins quand PluXml n'est pas à la racine
Petite remarque quand on utilise une autre langue (que le français) alors s'affiche
@Andrea ,
Dans le fichier tagOptions/lang/fr-wizard.php, modifie les lignes n°106 et suivantes comme suit :
<?php if(file_exists(PLX_PLUGINS. 'tagOptions/admin.php')) {echo ' <a href="plugin.php?p=' . get_class($this) . '">Page d\'administration '. $this->getLang('L_DEFAULT_MENU_NAME') . '</a>';} ?>Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Parfait @bazooka07 rmerrci
@bazooka07 , Merci pour ce retour
Cordialement,
gcyrillus , simple membre du forum et utilisateur de PluXml
Mon site PluXml: https://re7net.com | Plugins: https://ressources.pluxopolis.net/banque-plugins/index.php?all_versions | Thèmes: tester et télécharger @ https://pluxthemes.com
Indiquez [RÉSOLU] dans le titre de votre question une fois le soucis réglé, Merci