当前位置:网站首页 > 软件教程 > 正文

dedecms静态模板类标签使用方法

作者:admin发布时间:2021-11-02分类:软件教程浏览:评论:0


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

dedecms静态模板类标签使用方法

静态数据模板类:

类文档

include/dedetag.class.php

这一图纸是dedecms V5.3及以前版本号应用的具体的模板类,它是函数解析式模板类,并不是编译程序式的(差别是前面一种根据得到标识部位实现內容更换,后面一种是立即函数解析式PHP编码,二次实行)

一.模版英语的语法

织梦网站模板模块是一种应用XML名称室内空间方式的模版在线解析,应用织梦cms在线解析分析模版的主要益处是能够 更好的制订标识的特性,觉得上如同在使用HTML一样,使模版编码十分形象化灵便,新版本的织梦网站模板模块不光能完成模版的客户还能剖析模版里不正确的标识。

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 用于輸出一个二维数组,方式为:ps钢笔

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

(3) include 引进一个文档,方式为:

{dede:include file='文件目录' ismake='是不是为dede版块模版(yes/no)'/}

对资料的检索途径为次序为:相对路径.include文件夹名称,CMS安装文件,CMS主模版文件目录

3.织梦cms标识容许在一切标识中应用涵数对获得的值对其进行解决,方式为:

{dede:标识名字 特性='值' function='youfunction("主要参数一","主要参数二","@me")'/}

在其中 @me 用以表明当今标识的值,其他主要参数由你的涵数决策是不是存有,比如:

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

4.织梦cms标识容许现有的程序编写拓展。

文件格式为:

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

    }

 

    //下边2个友元函数仅是为了更好地兼容老版

    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


欢迎 发表评论: