dedecms动态模板类标签使用方法
作者:admin发布时间:2021-11-02分类:软件教程浏览:评论:0
dedecms动态模板类标签使用方法
关键类文档
include/dedetemplate.class.php
主要用途:用以单核心控制模块的动态性网页页面或目录页的模版分析,如:member/content_list.php ,一般是在 datalistcp.class.php 中应用,这一类在动态性加载的情形下,因为自身是把模版编写出PHP的,因而特性上面优等品于旧的分析类,这一技术将在未来版本号中做为通用性的方法。
一.操作方法:
$tpl = new DedeTemplate(
模版目标案例名字,一般是'tpl',
[模版储放文件目录(转化成缓存文件的时候会储放在这个文件目录),
include英语的语法默认设置引入文件目录]
);
一般状况下主要参数二和主要参数三是不相干的,如:
$tpl = new DedeTemplate('tpl');
假如在类文档中启用,应当再加上设定:
$this->tpl->SetObject($this);
在一些块启用中默认设置将应用当今类的友元函数。
$tpl->LoadTemplate(模版的物理学途径);
假如模版中含有 {dede:config name='' value=''/}
能够 在加载模版后,根据 $tpl->GetConfig($name) 得到这种自变量的值。
表明网页页面或储存网页页面为文档
$tpl->Display();
$tpl->SaveTo(物理学相对路径的文件夹名称);
二.模版标识英语的语法
1.标识通用性特点
(1) 短标识
{dede:tagname.name/}
相当于
{dede:tagname name='' /}
(2) 块标识
{dede:tagname}
循环系统编码
{/dede:tagname}
2.标识的实际英语的语法及相匹配的PHP编码
(1) 配备自变量
{dede:config name='' value=''/}
配备自变量能够 在加载模版后根据 $tpl->GetConfig($name) 得到,仅做为配备,没有模版中表明。
(2) 短标识
{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 二维数组,不然模板引擎没法得到它的值进而造成造成不正确。
(3) 随意启用块标识
{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) 统一管理方法,这一涵数储放在 cls_dede_tplinc.php 。
(4) 固定不动块标识
[1] datalist
从关联类友元函数GetArcList中获得二维数组并輸出
{dede:datalist}
循环系统编码
{/dede:datalist}
解析xml一个二给维二维数组,数据库是确定的,只可用用类启用。
相当于
{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'/}
(5) include 英语的语法
{dede:include file=''/}
{dede:include filename=''/}
(6) php 代码块
{dede:php
php 编码
/}
或
{dede:php}
php代码
{/dede:php}
(7) 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}
(8) 解析xml一个 array 二维数组
{dede:array.name}
{dede:key/} = {dede:value/}
{/dede:array}
各种各样英语的语法的实际编译程序后的编码,可查询 dede-template-class.php 的 function CompilerOneTag(&$cTag)。
块启用实例编码:
1.实例一
{tag:datalist timeformat=""}
<tr>
<td class='col1'>
<div>?<a href='{tag:field.arcurl/}'>{tag:field.title/}</a></div>
<!--div class='descriptions'> {tag:field.description function="CnSubstr(@me,150)"/}...</div-->
</td>
<td class='col2'>{tag:field.formattime/}</td>
</tr>
{/tag:datalist}
编译程序后的编码
<?php
$atts = array();
$atts['tagname'] = 'datalist';
$atts['timeformat'] = '';
$blockValue = $this->refObj->GetArcList($atts,$this->refObj,$fields);
foreach( $blockValue as $key=>$fields )
{
?>
<tr>
<td class='col1'>
<div>?<a href='<?php echo $fields['arcurl']; ?>'><?php echo $fields['title']; ?></a></div>
<!--div class='descriptions'> <?php echo CnSubstr($fields['description'],150); ?>...</div-->
</td>
<td class='col2'><?php echo $fields['formattime']; ?></td>
</tr>
<?php
}
?>
2.实例二
{tag:article sort='new' titlelen='36' row='10'}
<dd>[{tag:field.typename/}]<a href="{tag:field.arcurl/}">{tag:field.title function="CnSubstr(@me,24)"/}</a></dd>
{/tag:article}
编译程序后的编码
<?php
$atts = array();
$atts['tagname'] = 'article';
$atts['sort'] = 'new';
$atts['titlelen'] = '36';
$atts['row'] = '10';
$blockValue = MakePublicTag($atts,$this->refObj,$fields);
if(is_array($blockValue) && count($blockValue) > 0){
foreach( $blockValue as $key=>$fields )
{
?>
<dd>[<?php echo $fields['typename']; ?>]<a href="<?php echo $fields['arcurl']; ?>"><?php echo CnSubstr($fields['title'],24); ?></a></dd>
<?php
}
}
?>
标签:dedecms
相关推荐
你 发表评论:
欢迎- 软件教程排行
- 最近发表