Jump to content

[Smarty] Astuce pour virer les accents ?


Recommended Posts

Bonsoir

J'ai légèrement modifié le module tags et l'URL Rewriting de manière à avoir des URLs sympas sur les tags, le hic est que les accents ne passent pas vraiment bien >:-( (chose étrange : ils passent dans les expressions passées en paramètres d'URL mais pas dans les URLs réécrites...)

Bref

Mes quelques essais m'ont montré que les recherches fonctionnent sans accents, du coup j'aimerais bien trouver le truc pour virer les accents quand je forme les URLs au niveau du module blocktags !

Il me faudrait trouver ça sur l'expression suivante :

{$tag.name|urlencode}



Objectif : remplacer tous les accents par les lettres équivalentes sans accents... À ce propos, je ne trouve pas "urlencode" dans la doc Smarty ? C'est un truc de la Prestateam ou bien ?

Link to comment
Share on other sites

Hello,

Tu peux utiliser la plupart des fonctions PHP classique avec Smarty via le "|", exemple :

{$name|strtolower}



Il est donc normal qu'urlencode ne soit pas dans la doc Smarty ;)

Pour supprimer les accents, j'utiliserai plutôt la fonctionne toute prête Tools::linkRewrite() dans la classe Tools.php

Link to comment
Share on other sites

Bon !

J'ai essayé ça :

{$tag.name|escape:htmlall:'UTF-8'|regex_replace:"/&(.)(acute|grave|circ|uml|cedil|ring|tilde|slash);/":"\1"}



Mais le second pipe ne s'exécute à priori pas sur le premier ??? L'objectif étant de "formater" la chaîne en HTML (avec par ex. & eacute; en lieu et place de é) puis de remplacer les accents par leurs caractères correspondants... J'ai pas trouvé plus simple :cheese: mais ça fonctionne pô >:-(

Link to comment
Share on other sites

Up !

Fonctionne avec ça (suffisait de remplacer les guillemets par des cotes simples :wow: et de gérer les séparateurs pour les expressions à plusieurs mots)

{$tag.name|escape:htmlall:'UTF-8'|regex_replace:'/&(.)(acute|grave|circ|uml|cedil|ring|tilde|slash);/':'\1'|replace:' ':'+'}




Un peu tiré par les cheveux j'en conviens :cheese:

(ndlr : je dois retester ce truc pour les expressions tordues, genre avec des apostrophes, etc... Pour une raison qui m'échappe, le remplacement direct de caractère accentué vers caractère non accentué ne fonctionne pas !)

  • Like 1
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...