搜索
首页CMS教程DEDECMSDEDECMS静态模板类类文件是什么

DEDECMS静态模板类类文件是什么

DEDECMS静态模板类类文件是什么?

静态模板类类文件织梦模板引擎是一种使用XML名字空间形式的模板解析器

  推荐学习:织梦cms

使用织梦解析器解析模板的最大好处是可以轻松的制定标记的属性,感觉上就像在用HTML一样,使模板代码十分直观灵活,新版的织梦模板引擎不单能实现模板的解析还能分析模板里错误的标记。

include/dedetag.class.php这个文件是dedecms V5.3及之前版本使用的主要的模板类,它是解析式模板类,并非编译式的(区别是前者通过获得标签位置进行内容替换,后者是直接解析式PHP代码,二次执行) 

一、模板语法 

1、织梦模板引擎的代码样式有如下几种形式: 

{dede:标记名称 属性='值'/} 

{dede:标记名称 属性='值'}{/dede:标记名称} 

{dede:标记名称 属性='值'}自定义样式模板(InnerText){/dede:标记名称} 

提示: 

如果使用带底层模板的标记,必须严格用{dede:标记名称 属性='值'}{/dede:标记名称} 这种格式,否则会报错。 

2、织梦模板引擎内置有多个系统标记,这些系统标记在任何场合都是能直接使用的。 

(1) global 标记,表示获取一个外部变量,除了数据库密码之外,能调用系统的任何配置参数,形式为: 

{dede:global name='变量名称'}{/dede:global} 

或 

{dede:global name='变量名称'/} 

其中变量名称不能加 $ 符号,如变量 $cfg_cmspath ,应该写成 {dede:global name='cfg_cmspath'/} 。 

(2) foreach 用来输出一个数组,形式为: 

{dede:foreach array='数组名称'}[field:key/] [field:value/]{/dede:foreach} 

(3) include 引入一个文件,形式为: 

{dede:include file='文件名称' ismake='是否为dede板块模板(yes/no)'/} 

对文件的搜索路径为顺序为:绝对路径、include文件夹,CMS安装目录,CMS主模板目录 

3、织梦标记允许在任何标记中使用函数对得到的值进行处理,形式为: 

{dede:标记名称 属性='值' function='youfunction("参数一","参数二","@me")'/} 

其中 @me 用于表示当前标记的值,其它参数由你的函数决定是否存在,例如: 

{dede:field name='pubdate' function='strftime("%Y-%m-%d %H:%M:%S","@me")'/} 

4、织梦标记允许有限的编程扩展。 

格式为: 

代码如下:

{dede:tagname runphp='yes'} 
$aaa = @me; 
@me = "123456"; 
{/dede:tagname}

@me 表示这个标记本身的值,因此标记内编程是不能使用echo之类的语句的,只能把所有返回值传递给@me。 

此外由于程序代码占用了底层模板InnerText的内容,因此需编程的标记只能使用默认的InnerText。 

二、解析方式 

在 dedetag.class.php 里面有四个类 

class DedeAttribute 属性结构表述 

class DedeAttributeParse 属性解析器 

class DedeTag 标签结构表述 

class DedeTagParse 标签解析器 

使用解析类解析模板时一般经过下面的步骤 

1、初始化: 

$dtp = new DedeTagParse(); 

2、载入模板/模板字符串: 

$dtp->LoadTemplate(模板文件(绝对路径)); //会生成缓存,第二次不需解析模板 

或 

$dtp->LoadSource(字符串); 

3、给标签赋值 

foreach($dtp->CTags as $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这个类的结构,从而判断标签不同属性进行处理。 

代码如下:

class DedeTag 
{ 
var $IsReplace=FALSE; //标记是否已被替代,供解析器使用 
var $TagName=""; //标记名称 
var $InnerText=""; //标记之间的文本 
var $StartPos=0; //标记起始位置 
var $EndPos=0; //标记结束位置 
var $CAttribute=""; //标记属性描述,即是class DedeAttribute 
var $TagValue=""; //标记的值 
var $TagID = 0; 
//获取标记的名称和值 
function GetName() 
{ 
return strtolower($this->TagName); 
} 
function GetValue() 
{ 
return $this->TagValue; 
} 
//下面两个成员函数仅是为了兼容旧版 
function GetTagName() 
{ 
return strtolower($this->TagName); 
} 
function GetTagValue() 
{ 
return $this->TagValue; 
} 
//获取标记的指定属性 
function IsAttribute($str) 
{ 
return $this->CAttribute->IsAttribute($str); 
} 
function GetAttribute($str) 
{ 
return $this->CAttribute->GetAtt($str); 
} 
function GetAtt($str) 
{ 
return $this->CAttribute->GetAtt($str); 
} 
function GetInnerText() 
{ 
return $this->InnerText; 
} 
}

以上是DEDECMS静态模板类类文件是什么的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版