本网站所登载广告均为广告客户的个人意见及表达方式,与本站无关。另外提供网站建设等互联网技术服务,如果有需要 点击 加QQ进行联系。

避免Smarty解析(Smarty教程010)

Smarty教程 格尔格西船长 1301次 0评论

有时候部分模板中的代码是不需要或者不希望被Smarty解析的, 比较典型的例子是嵌入在页面HTML中的Javascript或CSS代码。 问题通常发生在这些语言会经常使用{ 和 },但{ 和 }也恰好是Smarty的 定界符。

避免被解析的一个良好方式,是分离你的Javascript/CSS代码到单独的文件中, 然后在HTML中引入它们。而且这样也有利于浏览器进行缓存。 当你需要嵌入Smarty的变量或者函数到Javascript/CSS中。

Smarty模板中,当{ 和 }定界符两边都是空格的时候,将会被自动忽略解析。 此特性可以通过设置Smarty的成员变量 $auto_literal为false来关闭。

<script>
 // 下面的定界符两边都是空格,所以可以被自动忽略解析
 function foobar {
 alert('foobar!');
 }
 // 下面需要手动忽略解析
 {literal}
 function bazzy {alert('foobar!');}
 {/literal}
</script>

{literal}..{/literal}可以让块中间的内容忽略Smarty的解析。 在需要使用定界符的时候,可以通过 {ldelim},{rdelim}标签,或者 {$smarty.ldelim},{$smarty.rdelim}的变量来使用。

Smarty的默认定界符{ 和 }可以整齐地界定一般内容的显示。 然而你可以通过修改Smarty的 $left_delimiter 和 $right_delimiter 的变量值,设置更适合的定界符。

修改定界符会影响到全部模板代码和解析,请确保在修改前已清除了全部的缓存和编译文件。

例子

$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';

$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>

 

转载请注明:php嘉友站 » 避免Smarty解析(Smarty教程010)

喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址