Jump to content

[Résolu] Fonction TRUNCATE de smarty et caratères accentués


Recommended Posts

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

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

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...