2010-06-11 13 views
1

J'ai besoin d'ajouter du code javascript dans les fichiers modèles Smarty et ces choses {ldelim} {rdelim} me détruisent. Existe-t-il un moyen de dire à smarty d'ignorer le balisage d'un bloc et de le sortir tel quel? Quelque chose de similaire à des blocs CDATA dans le xml?Dites à smarty d'imprimer le bloc tel quel

Juste au cas où: voici comment javascript simple semble maintenant:

$(function() {ldelim} 
     $("#slides").accessNews({ldelim} 
      speed : "{$speed}", 
      slideBy : 1 
     {rdelim});  
{rdelim}); 

heh chair de poule?

Répondre

4

Re mise à jour: Vous pouvez utiliser {literal} .... insert content here {/literal} pour désactiver l'analyse de variables Smarty pour des blocs entiers.

Ancienne réponse: J'aime changer les caractères de délimitation par défaut en quelque chose d'autre pour cette raison précise. (Pour autant que je sache, qui peut être fait pour l'ensemble du projet que, donc vous devez voir, que ce soit pour vous.)

Par exemple, pour

<($variablename)> 

(juste mon préféré, utiliser ce qui vous convient)

Les variables à modifier sont les propriétés rightDelimiter et leftDelimiter. Documentation

$smarty = new Smarty(); 
$smarty->left_delimiter = '<('; 
$smarty->right_delimiter = ')>'; 
+0

Mieux que le désordre {literal} {/ literal}. – Daff

+0

Malheureusement, cela ne s'applique pas à mon cas, car j'ai déjà beaucoup de fichiers modèles hérités avec lesquels travailler. – Juriy

+0

@Juriy je vois. Hmm, alors je ne vois pas un moyen de contourner cela, sauf pour exclu les blocs JS en utilisant {literal}. –

2

En utilisant la balise {literal} est utile dans ce cas, mais comme Pekka a dit qu'il est très ennuyeux de fermer et de commencer les étiquettes chaque fois que vous souhaitez insérer une variable. Vous pouvez changer les caractères de délimitation de Smarty, mais ce n'est pas si bon si vous avez déjà beaucoup de modèles.

L'équipe Smarty a résolu ce problème dans Smarty 3. Plus de balises {literal} et le modèle fonctionne correctement. Peut-être que vous pourriez essayer de le mettre à jour.

+0

Merci pour l'indice, je vais certainement l'essayer! – Juriy