在織夢(mèng)dedecms 里面對(duì)于數(shù)組進(jìn)行循環(huán)的標(biāo)簽有好幾個(gè),在前臺(tái)模板即使用靜態(tài)模板引擎有,{dede:foreach array='數(shù)組名稱'}[field:key/] [field:value/]{/dede:foreach}用來輸出一個(gè)數(shù)組,當(dāng)然,還有像萬能循環(huán)標(biāo)簽等。而在動(dòng)態(tài)模板引擎里面關(guān)于數(shù)組遍歷的就更多了,而且比前臺(tái)要靈活的多,今天向大家介紹的,在二次開發(fā)中常用的標(biāo)簽{dede:array.name}。
這個(gè)標(biāo)簽{dede:array.name}{dede:key/} = {dede:value/}{/dede:array.name}從表面上看,與前臺(tái)的標(biāo)簽,一個(gè)最大的區(qū)別就是在標(biāo)簽之間可以用大括號(hào){},而在前臺(tái)模板只除了幾個(gè)可以這樣用外,絕大多數(shù)都要用中括號(hào)[],這是與前臺(tái)模板里面最大的區(qū)別了。
這個(gè)array標(biāo)記在這個(gè)標(biāo)簽里面,意思是循環(huán)一個(gè)數(shù)組,而這個(gè)數(shù)組往往是二維數(shù)組,關(guān)于這個(gè)標(biāo)記的編譯,在文件dedetemplate.class.php的function CompilerOneTag(&$cTag)里面,這樣進(jìn)沒有多大效果,我們還是看一個(gè)實(shí)例吧。
進(jìn)入會(huì)員中心——>系統(tǒng)設(shè)置——>空間管理——>分類管理,這里面的功能就是添加分類用的,它對(duì)應(yīng)的數(shù)據(jù)庫(kù)表是dede_mtypes,在我們添加分類后,在“我的分類管理”下面就用到了這個(gè)標(biāo)記array。我們打開文件mytypes.htm,大約在63行,找到{dede:array.mtypearr}{/dede:array.mtypearr},其中里面的mtypearr是一個(gè)數(shù)組變量名,這個(gè)變量可以在文件mtypes.php,大約在第25行
while($row = $dsql->GetArray())
{
$mtypearr[] = $row;
}
通過把數(shù)據(jù)庫(kù)表dede_mtypes里的記錄循環(huán)出來,然后,放到二組數(shù)組$mtypearr里面,然后,在模板里就可以用{dede:array.mtypearr}{/dede:array.mtypearr}標(biāo)簽調(diào)用了。在這個(gè)標(biāo)簽中間又有{dede:value.mtypeid/}等的調(diào)用,這個(gè)標(biāo)簽里面的標(biāo)簽vlaue也是循環(huán)的一個(gè)一維數(shù)組,這里這個(gè)標(biāo)簽等價(jià)于<?php echo value['mtypeid'] ?>。
總起來講標(biāo)簽{dede:array.mtypearr}{dede:value.mtypeid/}{/dede:array.mtypearr} 就相當(dāng)于如下php循環(huán)。
foreach($mtypearr as $value){
foreach($value as $k=>$v){
echo $v;
}
}
在織夢(mèng)二次開發(fā)中,經(jīng)常用到的標(biāo)簽還有:
{dede:global.name/} 外部變量 等同于 <?php echo $name; ?>:這個(gè)短標(biāo)記在文件function CompilerOneTag(&$cTag)里面第862行,經(jīng)過編譯后的結(jié)果是'<'.'?php echo '.$cTag->tagValue.'; ?'.'>'
{dede:var.name/} var數(shù)組 等同于 <?php echo $_vars['name']; ?> 編譯后的值是'<'.'?php echo '.$cTag->tagValue.'; ?'.'>';
{dede:field.name/} field數(shù)組 等同于 <?php echo $fields['name']; ?> 編譯后的值是'<'.'?php echo '.$cTag->tagValue.'; ?'.'>';
{dede:cfg.name/} 系統(tǒng)配置變量 等同于 <?php echo $cfg_name; ?> 編譯后的值是'<'.'?php echo '.$cTag->tagValue.'; ?'.'>';
不有標(biāo)記:config,name,object,key,value,echo,array,php,if,include,label,datalist,pagelist等。
還有一個(gè)在織夢(mèng)會(huì)員中心踩踩模板里面的,{dede:list bind='GetSortArc' order='click' orderway='desc'}{/dede:list},這個(gè)我們?cè)谇芭_(tái)模板里面,一般用在列表頁(yè)調(diào)用數(shù)據(jù),而在會(huì)員中心,跟列表頁(yè)重名的list在這里用法類似,但是增加了一個(gè)屬性bind,這個(gè)屬性值是:“數(shù)據(jù)源來源函數(shù)”,請(qǐng)注意,這個(gè)list跟前臺(tái)模板中的list不是一個(gè)東西。最根本的原因就是會(huì)員中心的是用的動(dòng)態(tài)模板引擎,而前臺(tái)模板用的是靜態(tài)模板引擎,所以,用法當(dāng)然,就不一樣了,功能更不一樣,在二次開發(fā)中這個(gè)不是常用,但是在這里作一下記號(hào)。
如果經(jīng)常做織夢(mèng)二次開發(fā)的朋友,這些標(biāo)簽是不可跳過的,經(jīng)常使用,當(dāng)然,我們可以自己去修改模板引擎,來自己定義自己的標(biāo)簽。