今天分享一個比較實用的關于循環調用子欄目及其內容列表的小代碼,其實查看標簽手冊也能看到,但畢竟還是有懶人存在的!

根據標簽手冊,在織夢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'/}進行調用了。