已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP > 教程

标题: 第三章. 基本语法(三) - smarty中文手册

作者: @Ta

时间: 2012-06-13

点击: 2570

    <忽略smarty解析>
    有时候可能有一段代码你需要让smarty忽略其解析,直接输出. 类似javascript 和css 中的代码. 但是它们使用的 { } 会与smarty delimiters [定界符] 有冲突.
    注意:最好的避免解析是方法分离你的js和css到单独的文件,然后使用html标签引入其文件内容. 这也更有利于浏览器缓存. 如果你想运用smarty变量或函数到Js或者css中,可以使用如下方法.
    在 Smarty 模板中, 定界符 { 和 } 如果两边({的右边和}的左边)存在空白(包括空格和换行),那么本身将不会以smarty定界符的形式解析. 当然你可以通过设置 $auto_literal 使其取消默认行为.
    注意:即使你把定界符改成了别的,默认情况下两边仍然不能有空白。如果你的定界符是<{}>,那么默认情况下<{ include file="a.tpl" }>会直接输出。

   
例:使用自动忽略功能
<script>
  // 以下内容将直接输出,因为大括号两边存在空白
  function foobar {
alert('foobar!');
  }
  // 以下需要使用 literal 标记才能正常输出,因为大括号两边没有空白
  {literal}
function bazzy {alert('foobar!');}
  {/literal}
</script>
    
    {literal}..{/literal} 块里的模板标记将自动被忽略. 
    或者,不用自动忽略或{literal}块,你也可以使用 {ldelim} 标记来输出左定界符(默认是{), {rdelim} 输出右定界符。使用 {$smarty.ldelim} , {$smarty.rdelim} 变量也有同样的效果.
    例:
<script>function bazzy{ldelim}alert('foobar!');{rdelim}</script>
    输出<script>function bazzy{alert('foobar!');}</script>

    Smarty的默认定界符 {  和 } 非常简洁、美观。但是,如果另一组分隔符更好地满足您的需求,你可以通过设置Smarty的 $left_delimiter 和 $right_delimiter 属性来更改.
    注意:更改分隔符会影响所有的模板语法和解析系统。如果你决定改变它们,必须先清除缓存和编译文件。
    
例:
    
<?php
$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>

[隐藏样式|查看源码]


『回复列表(1|隐藏机器人聊天)』

1. 支持 不习惯这模板的使用语法
(/@Ta/2012-06-13 07:48//)

回复需要登录

9月17日 14:46 星期三

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1