Affichage de plus de 42 tags classés par alpha

Bonjour,

Quand j'indique 43 ou plus et alpha pour tagList:

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

curieusement, les 42 "premiers" tags sont bien dans l'ordre alpha, mais à partir du 43ème terme, s'affiche une nouvelle liste de tags toujours classés dans l'ordre alpha, mais qui auraient pu-du s'afficher avant, enfin je crois.

Exemple en live ici ou en image (pas de chance c'est le tag WordPress le 42ème) :

Bref, je ne vois pas ce qui cloche. D'autres que moi arrivent à voir / reproduire le phénomène ? Des pistes de solution ?

Mots clés:

Réponses

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    A priori, il n'y a pas de limite pour s'arrêter au 42ème tag.

    As-tu des articles désactivés ? Ton serveur donne la bonne date ? Pas d'article post-datés ?

    Si tu peux donner un lien de téléchargement pour ton fichier data/configurationstags.xml, je peux jeter un oeil.

  • GzygGzyg Member
    mars 2020 modifié

    Salut,

    C'est juste que l'ordre d'affichage par défaut prend d'abord les chiffres, puis les majuscules, puis les minuscules, puis les lettres accentuées.

    Il faut en passer par les "regex" pour améliorer cet affichage (cf bazooka7, grand spécialiste des "regex" sur ce forum).

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    Pour régler le conflit minuscules/majuscules, cela se règle simplement avec la fonction PHP strcasecmp() dans le fichier core/lib/class.plx.show.php pour la fonction plxShow::tagList() vers la ligne #1771 :

    # tri des tags
    switch($order) {
       case 'alpha':
           # Le tri alpha se fait sur la clé
           uksort(
               $counters,
               function($a, $b) {
                   return strcasecmp($a, $b);
               }
           ); # éventuellement uksort pour tri spécifique sur $tag
           break;
       case 'random':
    .........
    

    Par contre des tags comme "pluxml", "PluXml" et "Pluxml" ne fusionneront pas. A l'utilisateur de choisir correctement dans la liste de tags pendant l'édition de l'article.

  • Whouaaa :-)

    Et ça maaarche !

    Et puis je ne m'attendais pas à une réponse aussi rapide, précise, efficace, merci beaucoup @Gzyg et @bazooka07

  • Pour info, le code indiqué plus haut par @bazooka07 est toujours opérationnel.

    • PluXml version 5.8.9 (encodage UTF-8)
    • Version de PHP : 8.1.18
    • LiteSpeed
  • NonoMNonoM Member
    14 janv. modifié

    Salut à tous ;)
    Pour la version 5.8.9 de Pluxml, on retrouve bien la portion de code à la ligne 1869,
    mais que faut-il modifier exactement ?
    .............................................................................................................................
    # 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);
    }

  • bazooka07bazooka07 PluXml Lead Developer, Moderator

    Salut,
    Tu remplaces le bloc de code entre case 'alpha' et le break suivent par le code que j'ai donné en mars 2020.
    La mise à jour sera faite dans la prochaine version de PluXml

  • NonoMNonoM Member

    Parfait, merci ... et Content de te retrouver sur le forum @bazooka07 ! ;)

Connectez-vous ou Inscrivez-vous pour répondre.