DedeCMS怎麼會循環呼叫多層欄位及內容清單?
DedeCMS循環呼叫多層欄位及內容清單
推薦學習:織夢cms
Dedecms還是比較不錯的,當然,除了論壇的技術回覆速度! !今天分享一個比較實用的關於循環呼叫子欄位及其內容清單的小程式碼,其實查看標籤手冊也能看到,但畢竟還是有懶人存在的!
根據標籤手冊,在織夢(DedeCMS)系統中,可以用channelartlist 標籤進行循環子欄位及其欄位數據,據說,它也是織夢(DedeCMS)系統中唯一一個支援標籤嵌套的呼叫標籤,基本用法如下,可依需求修改:
<div> {dede:channelartlist} <dl> <dt><strong><a href="{dede:field name='typeurl'/}">{dede:field name='typename'/}</a></strong> <span><a href="{dede:field name='typeurl'/}">更多...</a></span></dt> <dd> <ul> {dede:arclist titlelen='60' row='8'} <li><span>[field:pubdate function="MyDate('m-d',@me)'/]</span><a href="[field:arcurl /]"> [field:title /]</a></li> {/dede:arclist} </ul> </dd> </dl> {/dede:channelartlist} </div>
上述程式碼在首頁可實現子欄位及子欄位內容清單的呼叫!下面說說 channelartlist 標籤在列表頁及內容頁的使用。
1、參數簡介
channelartlist 標籤暫時支援三個參數,分別為:
typeid='0' 限制上級欄目ID;也可以用top,支援“ ,」表示多個欄位
row='20' 迴圈的欄位數量,預設為20;
cacheid = '' 標籤快取ID,一般為空
但如果你只是將上述程式碼原封不動的複製貼上到終極欄位頁或內容頁,是不會出現任何呼叫結果的,因為在標籤channelartlist 中,當typeid為空,則表示當前欄目,但是終極欄目列表和內容頁是沒有下級欄目的,所以就會出錯!
2、呼叫實例
在終極清單頁或內容頁,正確的呼叫方法應該是以下的:
{dede:channelartlist typeid='top'}
這裡是typied='top',這個top值可以換成你想要的上級欄ID,但絕對是不可以為空的。這個大家一定要注意!
3、欄位高亮、特效呼叫
在這個標籤下,可以直接分別用{dede:field name='typename'/}與{dede:field name='typeurl' /}來表示欄位名稱與欄位連結的,當然還有一些其它特殊的變量,這裡也介紹一下,如:
{dede:field name='id'/}与{dede:field name='typeid'/} 均表示循环中的栏目ID; {dede:global name='itemindex'} 表示循环递增变量,从1开始; {dede:global name='itemparity'} 表示循环魔法变量,单数为1,双数为2;
以上就是可以在channelartlist中直接套用的,特別要注意的是第2、3兩個,擁有這兩個變量,可以輕鬆製作出各類非常個性的效果,例如欄目的隔行變色等。
關於這個欄位高亮,在 channelartlist.lib.php 並沒有自帶,但透過以下DIY可實現讓目前欄位進行高亮。方法(以dedecms 5.6為例):
開啟channelartlist.lib.php文件,找到如下程式碼:
$pv->Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]);
在其下一行加入以下程式碼:
if($typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['id']){ $pv->Fields['currentstyle'] = ' id="pic_focus"'; } else{ $pv->Fields['currentstyle'] = ''; }
然後,就可以在模板中進行使用{dede:field name='currentstyle'/}來呼叫了。
以上是DedeCMS怎麼循環呼叫多層欄位及內容列表的詳細內容。更多資訊請關注PHP中文網其他相關文章!