Alekhine Posted August 6, 2009 Share Posted August 6, 2009 Salut,J'ai besoin de tronquer le nom des produits, non pas "au premier mot entièrement affichable entier", mais à la longueur fixe que j'ai définie (trunc net quelque soit la position donc...)smarty help : http://www.smarty.net/manual/fr/language.modifier.truncate.php {$product.name|escape:htmlall:'UTF-8'|truncate:30:"...":true} Dans l'absolu ça fonctionne bien, sauf que, quand le 30eme caractère se situe au beau milieu d'un code html de caractère accentué il me tronque le html et me renvoi le bout de code avec :/exemple "machin parfumé" me donne "machin parfum&eacut;"(on imagine que le"é" soit le 25eme caractère par exemple)En fait le problème ne surviendrait pas si, par pur hasard, le dernier caratère du code html serait à la position 30, puisque le code html serait renvoyé "complet" donc affiché correctement (cad "é")Comment je peux solutionner ce problème à votre avis ? :|Merci,Alek. Link to comment Share on other sites More sharing options...
liandri Posted August 6, 2009 Share Posted August 6, 2009 C'est une question aussi que je me suis posé avec le truncate quand le contenu coupe une balise html, ne fermant plus ma balise en revanche pour toi c'est plus un problème du à l'encodage ! A moins de générer l'encodage avant l'envoi à smarty, et faire une analyse de contenu avec détection des éventuelles encodages html, puis calculer un pré truncate pour voir si ça passe. Si tout est bon retourner à smarty la chaine complète déjà encodée !C'est du boulot ! Mais comme ça, sur smarty je vois pas comment faire mieux Link to comment Share on other sites More sharing options...
Alekhine Posted August 6, 2009 Author Share Posted August 6, 2009 Ouep le problème est pas simple J'ai trouvé ça : http://www.guyrutenberg.com/2007/12/04/multibyte-string-truncate-modifier-for-smarty-mb_truncate/Mais j'ai le même résultat ?? {$product.name|escape:htmlall:'UTF-8'|mb_truncate:27:"...":'UTF-8':true} Link to comment Share on other sites More sharing options...
Alekhine Posted August 6, 2009 Author Share Posted August 6, 2009 A moins de générer l'encodage avant l'envoi à smarty, et faire une analyse de contenu avec détection des éventuelles encodages html Je penche pour cette solution, au moins pour éèê, mais je suis chocolat au niveau du tpl parce que pour ça faut coder en php :/sur l'aide de smarty je ne trouve pas d'équivalent à ce que je connais, du genre pos('sous-chaine', $chaine) pour connaitre la position éventuel d'un &truc;... (dans ce cas je pourrais la longueur complète du code html sachant qu'au final ça ne prend la place que d'un caractère à l'écran)Mais du php dans du tpl c'est le monde à l'envers ^^A moins de faire un plugin smarty (?) Link to comment Share on other sites More sharing options...
Alekhine Posted August 6, 2009 Author Share Posted August 6, 2009 oops ^^la réponse était ici même http://www.prestashop.com/forums/viewthread/23762/general_discussion/problem_with_smarty_truncate_modifier_html_entities_and_utf8L'avantage de cette modif c'est qu'un StrLen() renvoi la vraie longueur de chaine (non perturbée par la longueur du code html des caractères accentués) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now