2010-06-11 43 views
1

我需要将一些JavaScript代码嵌入到Smarty模板文件中,这些{ldelim} {rdelim}事情正在让我失望。有没有办法告诉smarty忽略块的标记,只是输出它?一些类似于XML中的CDATA块?告诉smarty按照原样打印块

以防万一:这里是JavaScript的现在怎么看起来简单:

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

令人毛骨悚然呵?

回答

4

重新更新:您可以使用{literal} .... insert content here {/literal}来关闭整个块的Smarty变量解析。

旧回答:我喜欢将默认分隔符转换为其他原因。 (据我所知,可以为整个项目只进行的,所以你必须看它是否适合你。)

例如以

<($variablename)> 

(只是我个人最喜欢的,使用任何适合你的)

要更改的变量是rightDelimiterleftDelimiter属性。 Documentation

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

比{literal} {/ literal}混乱更好。 – Daff 2010-06-11 12:03:44

+0

不幸的是,我并不适合我的情况,因为我已经有很多传统的模板文件可以使用。 – Juriy 2010-06-11 12:20:37

+0

@Juriy我明白了。嗯,那么除了使用{literal}排除JS块以外,我没有看到任何解决方法。 – 2010-06-11 12:21:15

2

使用{}文字标签在这种情况下是有用的,但佩卡说,这是很烦人的关闭并开始标签要插入一个变量每次。 您可以更改Smarty的分隔符,但如果您已经有很多模板,那就不太好了。

Smarty团队在Smarty 3中解决了这个问题。没有更多的{literal}标签和模板可以正常工作。也许你可以尝试更新它。

+0

感谢您的提示,我一定会尝试! – Juriy 2010-06-24 12:17:31