1. 首页 >> 时尚

dedetemplate.class.php 静态模板类

中心类文件include/dedetemplate.class.php


用处:用于非中心模块的静态静态页面或列表页的模板分析,如 :member/content_list.php ,模板但凡是静态在 datalistcp.class.php 中独霸 ,这个类在静态运转的模板气候下 ,因为本身是静态把模板编译成PHP的 ,是模板以功用上会优级于旧的分析类,这浅近例将在将来版本中作为通用的静态编制  。


1 、模板独霸编制 :

$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(物理尽对路途的静态文件名);


2 、模板标识表记标帜语法

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}

遍历一个二给维数组,数据源是结实的,只合用用类调用 。

齐截于

{ 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) 遍历一个 array 数组

{ dede:array.name}

  { dede:key/} = { dede:value/}

{ /dede:array}


各类语法的具体编译后的代码,可搜检 dede-template-class.php 的 function CompilerOneTag(&$cTag)  。


块调用示例代码:

1、示例一

 { tag:datalist   timeformat=""}<br /> 

 <tr><br /> 

<td class='col1'><br /> 

<div>?<a   href='{ tag:field.arcurl/}'>{ tag:field.title/}</a></div><br /> 

<!--div   class='descriptions'>&nbsp;&nbsp;&nbsp;&nbsp;{ tag:field.description   function="CnSubstr(@me,150)"/}...</div--><br /> 

</td><br /> 

<td   class='col2'>{ tag:field.formattime/}</td><br /> 

</tr><br /> 

 { /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>  

<div>?<a href='<?php echo $fields['arcurl']; ?>'><?php echo $fields['title']; ?></a></div>  

<!--div>&nbsp;&nbsp;&nbsp;&nbsp;<?php echo CnSubstr($fields['description'],150); ?>...</div-->  

</td>  

<td><?php echo $fields['formattime']; ?></td>  

 </tr>  

<?php  

 }  

 ?>        


2 、示例二


{ tag:article sort='new'   titlelen='36' row='10'}<br /> 

<dd>[{ tag:field.typename/}]<a   href="{ tag:field.arcurl/}">{ tag:field.title   function="CnSubstr(@me,24)"/}</a></dd><br /> 

 { /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  

 }  

 }  

?>  



版权声明:新流派 - 专业行业资讯与产品服务平台 - x6p.cn ,转载请注明出处:https://www.x6p.cn/news/03c2399973.html

 
QQ在线咨询
售前咨询热线
020-123456789
微信号
020-123456789