告诉smarty按原样打印块

时间:2010-06-11 11:58:44

标签: php javascript smarty

我需要将一些javascript代码内嵌到Smarty模板文件中,这些{ldelim} {rdelim}事情正在扼杀我。有没有办法告诉smarty忽略块的标记并按原样输出?类似于xml中的CDATA块?

以防万一:这里是javascript现在看起来很简单:

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

令人毛骨悚然嘿嘿?

2 个答案:

答案 0 :(得分:4)

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

旧答案:我想将默认分隔符更改为其他内容,原因如下。 (据我所知,这可以仅针对整个项目进行,所以你必须看看它是否适合你。)

例如

<( $variablename )>

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

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

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

答案 1 :(得分:2)

在这种情况下使用{literal}标签非常有用,但正如Pekka所说,每次要插入变量时关闭和开始标记都非常烦人。 你可以改变Smarty的分隔符,但是如果你已经拥有很多模板那就不太好了。

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