标记通用特性
① 短标记
{dede:tagname.name/}
等同于
{dede:tagname name='' /}
② 块标记
{dede:tagname}
循环代码
{/dede:tagname}
标记的具体语法及对应的PHP代码
① 配置变量
{dede:config name='' value=''/}
配置变量可以在载入模板后通过 $tpl->GetConfig($name) 获得,仅作为配置,不在模板中显示。
② 短标记
{dede:global.name/} 外部变量 等同于 <?php echo $name; ?>
{dede:var.name/} var数组 等同于 <?php echo $_vars['name']; ?>
{dede:field.name/} field数组 等同于 <?php echo $fields['name']; ?>
{dede:cfg.name/} 系统配置变量 等同于 <?php echo $cfg_name; ?>
考虑到大多数情况下都会在函数或类中调用模板,因此 $_vars、$fields 数组必须声明为 global 数组,否则模板引擎无法获得它的值从而导致产生错误。
③ 自由调用块标记
{tag:blockname bind='GetArcList' bindtype='class'}
循环代码
{/tag:blockname}
必要属性:
bind 数据源来源函数
bindtype 函数类型,默认是 class 可选为 sub
rstype 返回结果类型,默认是 array ,可选项为 string
自定义函数格式必须为 function(array $atts,object $refObj, array $fields);
在没有指定 bind 绑定的函数的情况下,默认指向 MakePublicTag($atts,$tpl->refObj,$fields) 统一管理。
④ 固定块标记
1.datalist
从绑定类成员函数GetArcList中获取数组并输出
{dede:datalist}
循环代码
{/dede:datalist}
遍历一个二给维数组,数据源是固定的,只适用用类调用。
等同于
{tag:blockname bind='GetArcList' bindtype='class' rstype='arrayu'}
循环代码
{/tag:blockname}
2.label
从绑定函数中获取字符串值并输出
等同于 {tag:blockname bind='func' bindtype='sub' rstype='string'/}
3.pagelist
从绑定类成员函数GetPageList中获取字符串值并输出
等同于 {tag:blockname bind='GetPageList' bindtype='class' rstype='string'/}
4.include
{dede:include file=''/}
{dede:include filename=''/}
5.php
{dede:php
php 代码
/}
或
{dede:php}
php代码
{/dede:php}
6.If
仅支持 if ,else ,else 直接用{else}表示,但不支持{else if}这样的语法 ,一般建议模板中不要使用太复杂的条件语法,如果确实有需要,可以直接使用 php 语法。
{dede:if 条件} a-block {else} b-block {/dede:if}
条件中允许使用 var.name 、global.name 、field.name、cfg.name 表示相应的变量。
如:
{dede:if field.id>10 }
{/dede:if}
7.遍历一个 array 数组
{dede:array.name}
{dede:key/} = {dede:value/}
{/dede:array}
各种语法的具体编译后的代码,可查看dedetemplate.class.php的function CompilerOneTag(&$cTag)。
新闻热点
疑难解答