We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 5811
    • 1,717 Posts
    Sous Modx0.9.6 en francais-utf8 j’utilise Ditto2.0.2 et tvTagCloud.

    J’ai crée une Tv nomée lvvTags de type texte et je saisi le mot clé sibérie (avec un accent). Si le placeholder [+tagLinks+] que j’utilise dans le chunck pour afficher un item de liste restitue bien la liste des mots-clés associé au document, il n’en va pas de même pour le snippet tvTagCloud. Le nuage affiche sib?rie en lieu et place de sibérie.

    Est ce que quelqu’un a déjà utilisé tvTagCloud en utf8 avec des mots clés accentués ? Avez-vous rencontré ce pb.


    Autre question - Existe-t’il une version de tvTagCloud fonctionnant uniquement pour une seule page plutot que pour des documents parents ? Est ce que quelqu’un s’est déjà attaqué à cette modification ?

    Merci d’avance
      • 5811
      • 1,717 Posts
      Concernant la deuxième question la réponse de Héliotrope : http://modxcms.com/forums/index.php/topic,6407.msg44949.html#msg44949 doit etre adaptée pour traiter un tableau.
      Donc ligne 48 remplacer :
      $subEntities = $modx->getDocumentChildren($parent);

      par
      $subEntities = $modx->getDocumentChildren($parent);
      if(!count($subEntities)) $subEntities[]=$modx->getDocument($parent); 
      


      Bien sur pour que le document soit traité cela implique que celui-ci ne comporte aucune descendance (count($subEntities)=0).

      A noter que la liste des mots clés de la page affiche toujours sib?rie au lieu de Sibérie.
      Donc le pb de l’UTF-8 avec tvTagCloud persiste. Quelqu’un a t’il une piste pour traiter ce pb ?
        • 23050
        • 1,842 Posts
        Salut coroico,

        La première chose à laquelle j’ai pensé est un problème au niveau de l’encodage des fichiers qu’il faut uploader sur le serveur... mais voilà, il n’y a pas de fichier ! Tout passe par le snippet uniquement.

        Du coup, je ne vois pas trop : est-ce que dans ta bdd, les caractères accentués sont bien rendus ?
          • 27889
          • 415 Posts
          Hello,

          le problème semble venir de tmplvars.format.inc.php qui utilise des fonction 7bits comme strtolower, ucfirst... En fait il faudrait utiliser les fonction mbstring (mb_strlen) qui elles gèrent l’utf8 (encodage multi-octet) le problème est la compatibilité, mbstring est apparu depuis la version 4.0.6 mais nécessite que le module soit chargé, de plus certaines fonctions n’ont été implémentées que plus tard ( détection d’encodage : 5.1.2).

          Passer à l’utf8 oui, mais quelle gageure !
          Espérons que MODx 0.9.7 utilisera ces fonctions.
            MODx Sites & Prestations: http://dp-site.fr [Last MODx Site]
            MODx Repository: [HOME] [MetaTagsExtra] / Current Dev: [xFDM]
            • 5811
            • 1,717 Posts
            Mais dans ce cas comment fait le snippet Ditto 2.0.2 qui lui produit correctement la liste des mots clés (et liens associés) via le placeholder [+tagLinks+]. Dans les deux cas Ditto ou tvTagCloud, le snippet doit bien récupérer les valeurs associées à la TV et les afficher, non ?

            Mes tests sont effectués en PHP5/Mysql5 sur une plateforme XP sous Wamp5
              • 27889
              • 415 Posts
              Oui bien sur mais je pense que ça dépend du traitement qui est effectué après la récupération du contenu.
                MODx Sites & Prestations: http://dp-site.fr [Last MODx Site]
                MODx Repository: [HOME] [MetaTagsExtra] / Current Dev: [xFDM]
                • 5811
                • 1,717 Posts
                Effectivement, après vérification, le problème vient de l’utilisation de la fonction strtolower utilisée dans le snippet tvTagCloud. L’utilisation de cette fonction "pète" l’encodage de la chaine de caractères.

                j’avais tenu bon, et privilégié l’UTF-8, mais là je pense que vu les pbs rencontrés je vais repasser en latin-1. Dommage pour mes amis Russes et Chinois !!!
                  • 27889
                  • 415 Posts
                  tu peux faire un test si la fonction existe et utiliser mb_strtolower() qui gère l’utf8
                    MODx Sites & Prestations: http://dp-site.fr [Last MODx Site]
                    MODx Repository: [HOME] [MetaTagsExtra] / Current Dev: [xFDM]
                    • 5811
                    • 1,717 Posts
                    Effectivement le test strtolower(’Sibérie’,’UTF-8’) donne bien sibérie. Par contre il faut bien précisé l’encoding UTF-8, sinon on trouve sib?rie comme résultat. Probablement parceque l’encoding par défaut est latin-1

                    Merci Soda pour ces explications.

                    hormis $modx->config[’etomite_charset’] existe-t’il une autre façon de récupérer le charset du back-end ? de façon à éviter de graver en dur le charset à UTF-8.



                      • 23050
                      • 1,842 Posts
                      Bonsoir,

                      Merci Soda pour le tip sur mb_strtolower... ça règle le souci sur les tags !

                      En revanche, j’avais aussi un souci sur mon tooltip avec les accents. Du coup, j’ai testé de remplacer htmlentities par htmlspecialchars dans $this_tooltip = htmlentities($this_tooltip); (li 230 du snippet v 2.1.1).

                      Est-ce que ça peut poser des problèmes ce changement de fonctionnement ? Risque de sécurité ou je ne sais quoi ... Je voudrai pas faire n’importe quoi ^^

                      Merci !