By: Loulou
Date: 2007-10-28
Time: 22:09
|
Comment afficher un texte comme le ferait printf ?Bonsoir à tous,
Je commence à utiliser TBS pour un site multilingue et je suis confronté à une petite colle. Mes textes sont dans un tableau PHP que j'intègre avec un MergeBlock. Dans mes templates j'écris des choses simples comme : [var.LaLangue.LeTexte]. Jusque là, tout fonctionne parfaitement bien. Ce que je n'avais pas prévu, ce sont les textes contenant des valeurs variables, comme par exemple en syntaxe PHP: 'La taille mesure de %d à %d mètres'. Dans la syntaxe TBS (car je préfèrerais ne pas le faire en php, pour une question de "propreté" du code), y a-t-il un moyen d' "injecter" simplement des valeurs dans mes textes (à la manière d'un printf) ? Dans mon template j'ai pour l'instant :
J'ai essayé ceci: Essai 1: J'ai changé ma constante texte par 'La taille mesure de [var.mini] à [var.maxi] mètres' Sans surprise, ca n'a pas fonctionné, l'affichage ayant été fait tel quel. Essai 2: J'ai changé ma constante texte par 'La taille mesure de [mini] à [maxi] mètres' avec dans mon code PHP :
Auriez-vous une solution à me proposer, ou devrai-je bidouiller en php certains textes (ce que je souhaiterais éviter) ? Par avance un grand merci pour votre aide ! |
|||
By: Skrol29
Date: 2007-10-28
Time: 22:28
|
Re: Comment afficher un texte comme le ferait printf ?Salut Loulou,
Par défaut TBS protège le contenu qu'il fusionne. Tu peux lever cette protection champ par champ avec le paramètre "protec" http://www.tinybutstrong.com/fr/manual.php#html_field_prm_protect Il existe aussi une propriété de TBS pour annuler la protection de façon systématique, mais il n'est pas conseillé de l'utiliser. |
|||
By: Loulou
Date: 2007-10-29
Time: 16:15
|
Re: Comment afficher un texte comme le ferait printf ?Un grand merci pour cette réponse rapide, "protect=no" était effectivement nécessaire mais pas suffisant. J'ai cherché encore dans le forum et suis tombé sur le message de Eldarion qui a rencontré exactement le même problème que moi, pour sa gestion des langues lui aussi :
http://www.tinybutstrong.com/fr/forum.php?msg_id=5813# Il me fallait donc en plus ajouter un $TBS->MergeField('var') pour faire un second passage je suppose (j'espère que les performances n'en seront pas trop dégradées !). Pour récapituler rapidement, si ca peut aider d'autres personnes : Le problème : afficher une var dans un texte lui-même var ------------------------------------------------------------------ coté PHP :
Supposons que la langue soit FR, coté HTML :
La solution : -------------- Pour obtenir l'affichage de 'Le train partira à 10h38' et non 'Le train partira à [var.HeureDepart]', il faut ajouter :
|