織夢DedeCMS模板引擎是一種使用XML命名空間的模板解析器,能夠有效地解析模板代碼。其最大的優(yōu)勢在于可以輕松地定義標(biāo)記的屬性,讓模板代碼既直觀又靈活。此外最新版織夢模板引擎不僅支持模板解析,還能自動分析模板中的錯誤標(biāo)記。
一、DedeCMS模板引擎代碼樣式
在DedeCMS模板引擎中,代碼樣式主要有以下幾種形式:
1、單標(biāo)簽樣式
{dede:標(biāo)記名稱 屬性="值"/}
2、起止標(biāo)簽樣式
{dede:標(biāo)記名稱 屬性="值"}{/dede:標(biāo)記名稱}
3、帶自定義樣式的標(biāo)簽
{dede:標(biāo)記名稱 屬性="值"}自定義樣式模板(InnerText){/dede:標(biāo)記名稱}
注意:使用具有底層模板的標(biāo)記時,務(wù)必嚴(yán)格遵循第二種格式,即”{dede:標(biāo)記名稱 屬性=”值”}{/dede:標(biāo)記名稱}”。不符合格式將導(dǎo)致錯誤。
二、DedeCMS內(nèi)置系統(tǒng)標(biāo)記
DedeCMS模板引擎內(nèi)置了多種系統(tǒng)標(biāo)記,用戶可以在任何情況下直接使用。以下是幾個常用的標(biāo)記:
1、global標(biāo)記
用于獲取外部變量,除數(shù)據(jù)庫密碼外可調(diào)用系統(tǒng)的任何配置參數(shù)。格式如下:
{dede:global name="變量名稱"}{/dede:global}
或:
{dede:global name="變量名稱"/}
注意:變量名稱中不能包含美元符號($),比如變量”$cfg_cmspath”應(yīng)寫為 “{dede:global name=”cfg_cmspath”/}”。
2、foreach標(biāo)記
用于輸出數(shù)組。格式如下:
{dede:foreach array="數(shù)組名稱"}[field:key/] [field:value/]{/dede:foreach}
3、include標(biāo)記
用于引入其他文件。格式如下:
{dede:include file="文件名稱" ismake="是否為dede板塊模板(yes/no)"/}
文件的搜索順序為:絕對路徑、”include”目錄、CMS安裝目錄和CMS主模板目錄。
三、DedeCMS標(biāo)記中使用函數(shù)處理值
DedeCMS標(biāo)記支持在任何標(biāo)簽中應(yīng)用函數(shù)對獲取的值進(jìn)行處理,格式為:
{dede:標(biāo)記名稱 屬性="值" function="your_function("參數(shù)一","參數(shù)二","@me")"/}
其中,”@me” 表示當(dāng)前標(biāo)記的值,其它參數(shù)根據(jù)需要由你的函數(shù)決定。舉個例子:
{dede:field name="pubdate" function="strftime("%Y-%m-%d %H:%M:%S","@me")"/}
四、DedeCMS編程擴(kuò)展
DedeCMS標(biāo)記還允許有限的編程擴(kuò)展,格式為:
{dede:標(biāo)記名稱 runphp="yes"} $aaa = @me; @me = "123456"; {/dede:標(biāo)記名稱}
這里的 “@me” 表示當(dāng)前標(biāo)記的值。在標(biāo)記內(nèi)部不允許使用”echo”等輸出語句,所有返回值需通過 “@me” 進(jìn)行傳遞。另外,由于程序代碼占用了底層模板的InnerText內(nèi)容,因此帶有編程的標(biāo)記只能使用默認(rèn)的InnerText。