有时候部分模板中的代码是不需要或者不希望被Smarty解析的, 比较典型的例子是嵌入在页面HTML中的Javascript或CSS代码。 问题通常发生在这些语言会经常使用{ 和 },但{ 和 }也恰好是Smarty的 定界符 。 避免被解析的一个良好方式,是分离你的Javascript/CSS代码到单独的文件中, 然后在HTML中引入它们。而且这样也有利于浏览器进行缓存。 当你需要嵌入Smarty的变量或者函数到Javascript/CSS中,请参考下面的方式: Smarty模板中,当{ 和 }定界符两边都是空格的时候,将会被自动忽略解析。 此特性可以通过设置Smarty的成员变量 $auto_literal 为false来关闭。

Example 3.8. 使用自动忽略解析的特性

<script> // 下面的定界符两边都是空格,所以可以被自动忽略解析 function foobar { alert('foobar!'); // 下面需要手动忽略解析 {literal} function bazzy {alert('foobar!');} {/literal} </script> $smarty->assign('foo', 'bar'); $smarty->assign('name', 'Albert'); $smarty->display('example.tpl'); Welcome <!--{$name}--> to Smarty <script language="javascript"> var foo = <!--{$foo}-->; function dosomething() { alert("foo is " + foo); dosomething(); </script>