国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > 織夢DEDE > 正文

DedeCms 常用函數參考:靜態(tài)模板類

2024-07-12 09:06:36
字體:
來源:轉載
供稿:網友

DedeCms V5.3 常用函數參考:靜態(tài)模板類

類文件
include/dedetag.class.php

這個文件是dedecms V5.3及之前版本使用的主要的模板類,它是解析式模板類,并非編譯式的(區(qū)別是前者通過獲得標簽位置進行內容替換,后者是直接解析式PHP代碼,二次執(zhí)行)

一、模板語法
織夢模板引擎是一種使用XML名字空間形式的模板解析器,使用織夢解析器解析模板的最大好處是可以輕松的制定標記的屬性,感覺上就像在用HTML一樣,使模板代碼十分直觀靈活,新版的織夢模板引擎不單能實現模板的解析還能分析模板里錯誤的標記。

1、織夢模板引擎的代碼樣式有如下幾種形式:
{dede:標記名稱 屬性='值'/}
{dede:標記名稱 屬性='值'}{/dede:標記名稱}
{dede:標記名稱 屬性='值'}自定義樣式模板(InnerText){/dede:標記名稱}

提示:
如果使用帶底層模板的標記,必須嚴格用{dede:標記名稱 屬性='值'}{/dede:標記名稱} 這種格式,否則會報錯。

2、織夢模板引擎內置有多個系統(tǒng)標記,這些系統(tǒng)標記在任何場合都是能直接使用的。

(1) global 標記,表示獲取一個外部變量,除了數據庫密碼之外,能調用系統(tǒng)的任何配置參數,形式為:
{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 的源碼的,這個由系統(tǒng)進行了自動的映射。

4、顯示或保存為HTML

$dtp->display();

$dtp->SaveTo(靜態(tài)文件名);

對于二次開發(fā)人員而言,不大需要知道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;    }}


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 馆陶县| 应城市| 揭东县| 海门市| 涪陵区| 凉城县| 轮台县| 吉隆县| 婺源县| 甘孜县| 西华县| 赤水市| 墨玉县| 阳高县| 定州市| 尼勒克县| 沧源| 金昌市| 将乐县| 靖边县| 周口市| 台中市| 招远市| 华蓥市| 武邑县| 婺源县| 阳西县| 安康市| 育儿| 阜新市| 梁平县| 天全县| 河南省| 黑河市| 马尔康县| 彭水| 怀宁县| 昭平县| 英超| 荣昌县| 秭归县|