静态模板函数

静态模板函数,第1张

DEDECMS教程之静态模板类类文件

静态数据模板类文档梦模板模块是一个使用XML名称room空的在线模板解析

应用织梦cms在线解析分析模板的较大益处是能够轻轻松松的制订标记的属性,觉得上如同再用HTML一样,使模板编码十分形象化灵便,新版本的织梦模板模块不光能完成模板的分析还能剖析模板里不正确的标记。

include/dedetag.class.php这一文档是dedecmsV5.3及以前版本号应用的关键的模板类,它是函数解析式模板类,并不是编译程序式的(差别是前面一种根据得到标识部位开展內容更换,后面一种是立即函数解析式PHP编码,二次实行)
一、模板英语的语法
1、织梦模板模块的编码款式有以下几类方式:
{dede:标记名称属性='值'/}
{dede:标记名称属性='值'}{/dede:标记名称}
{dede:标记名称属性='值'}自定款式模板(InnerText){/dede:标记名称}
提醒:
假如应用带最底层模板的标记,务必严苛用{dede:标记名称属性='值'}{/dede:标记名称}这类文件格式,不然会出错。
2、织梦模板模块内嵌有好几个系统软件标记,这种系统软件标记在一切场所全是能立即应用的。
(1)global标记,表明获得一个外界自变量,除开数据库查询登陆密码以外,能启用系统软件的一切配备主要参数,方式为:
{dede:globalname='自变量名称'}{/dede:global}

{dede:globalname='自变量名称'/}
在其中自变量名称不可以加$标记,如自变量$cfg_cmspath,应当写出{dede:globalname='cfg_cmspath'/}。
(2)foreach用于輸出一个数组,方式为:
{dede:foreacharray='数组名称'}[field:key/][field:value/]{/dede:foreach}
(3)include导入一个文档,方式为:
{dede:includefile='文档名称'ismake='是不是为dede版块模板(yes/no)'/}
对文档的检索途径为次序为:相对路径、include文件夹名称,CMS安装文件,CMS主模板文件目录
3、织梦cms标记容许在一切标记中应用涵数对获得的值开展解决,方式为:
{dede:标记名称属性='值'function='youfunction("主要参数一","主要参数二","@me")'/}
在其中@me用以表明当今标记的值,其他主要参数由你的涵数决策是不是存有,比如:
{dede:fieldname='pubdate'function='strftime("%Y-%m-%d%H:%M:%S","@me")'/}
4、织梦cms标记容许比较有限的程序编写拓展。
文件格式为:

复制代码编码以下:
{dede:tagnamerunphp='yes'}
$aaa=@me;
@me="123456";
{/dede:tagname}

@me表明这一标记自身的值,因而标记内程序编写是不可以应用echo这类的句子的,只有把全部返回值传送给@me。
除此之外因为编程代码占有了最底层模板InnerText的內容,因而需程序编写的标记只有应用默认设置的InnerText。
二、分析方法
在dedetag.class.php里边有四个类
classDedeAttribute属性构造描述
classDedeAttributeParse属性在线解析
classDedeTag标识构造描述
classDedeTagParse标识在线解析
应用分析类分析模板时一般历经下边的流程
1、复位:
$dtp=newDedeTagParse();
2、加载模板/模板字符串数组:
$dtp->LoadTemplate(模板文档(相对路径));//会形成缓存文件,第二次不需分析模板

$dtp->LoadSource(字符串数组);
3、给标识取值
foreach($dtp->CTagsas$tid=>$ctag){
//分辨ctag的名称和属性,并给赋不一样的值,一般用涵数解决
if($ctag->GetName=='mytag')$dtp->Assign($tid,mytagvalue($ctag));
}
在上面事例中,立即把名称为mytag的标识转交到mytagvalue涵数解决,mytagvalue里分辨$ctag的每个属性,回到不一样內容就可以。
在V5.3版本号中,一般除开field、list等专用型标识以外,凡arc.*开始的类分析的文档,标识全是对应当include/taglib的源代码的,这一由系统软件开展了全自动的投射。
4、显示信息或储存为HTML
$dtp->display();

$dtp->SaveTo(静态数据文件夹名称);
针对二次开发工作人员来讲,并不大必须了解dedecms模板实际分析方法,但是应当十分清晰CTag这一类的构造,进而分辨标识不一样属性开展解决。

复制代码编码以下:
classDedeTag
{
var$IsReplace=FALSE;//标记是不是已被取代,供在线解析应用
var$TagName="";//标记名称
var$InnerText="";//标记中间的文字
var$StartPos=0;//标记起止部位
var$EndPos=0;//标记完毕部位
var$CAttribute="";//标记属性叙述,就是classDedeAttribute
var$TagValue="";//标记的值
var$TagID=0;
//获得标记的名称合值
functionGetName()
{
returnstrtolower($this->TagName);
}
functionGetValue()
{
return$this->TagValue;
}
//下边2个友元函数仅是为了更好地兼容老版
functionGetTagName()
{
returnstrtolower($this->TagName);
}
functionGetTagValue()
{
return$this->TagValue;
}
//获得标记的特定属性
functionIsAttribute($str)
{
return$this->CAttribute->IsAttribute($str);
}
functionGetAttribute($str)
{
return$this->CAttribute->GetAtt($str);
}
functionGetAtt($str)
{
return$this->CAttribute->GetAtt($str);
}
functionGetInnerText()
{
return$this->InnerText;
}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/773613.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存