DedeCMS織夢循環(huán)調(diào)用多級欄目及內(nèi)容列表

字號:


    Dedecms還是比較不錯的,當(dāng)然,除了論壇的技術(shù)回復(fù)速度!!今天分享一個比較實用的關(guān)于循環(huán)調(diào)用子欄目及其內(nèi)容列表的小代碼,其實查看標(biāo)簽手冊也能看到,但畢竟還是有懶人存在的!
    根據(jù)標(biāo)簽手冊,在織夢(DedeCMS)系統(tǒng)中,可以用 channelartlist 標(biāo)簽進(jìn)行循環(huán)子欄目及其欄目數(shù)據(jù),據(jù)說,它也是織夢(DedeCMS)系統(tǒng)中唯一一個支持標(biāo)簽嵌套的調(diào)用標(biāo)簽,基本用法如下,可根據(jù)需要修改:
    <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>
    我沒做演示,找了個類似的效果圖,借用一下:
    上述代碼在首頁可實現(xiàn)子欄目及子欄目內(nèi)容列表的調(diào)用!下面說說 channelartlist 標(biāo)簽在列表頁及內(nèi)容頁的使用。
    1、參數(shù)簡介
    channelartlist 標(biāo)簽暫時支持三個參數(shù),分別為:
    typeid='0' 限制上級欄目ID;也可以用top,支持“,”表示多個欄目
    row='20' 循環(huán)的欄目數(shù)量,默認(rèn)為20;
    cacheid = '' 標(biāo)簽緩存ID,一般為空
    但如果你只是將上述代碼原封不動的復(fù)制粘貼到終極欄目頁或內(nèi)容頁,是不會出現(xiàn)任何調(diào)用結(jié)果的,因為在標(biāo)簽 channelartlist 中,當(dāng)typeid為空,則表示當(dāng)前欄目,但是終極欄目列表和內(nèi)容頁是沒有下級欄目的,所以就會出錯!
    2、調(diào)用實例
    在終極列表頁或內(nèi)容頁,正確的調(diào)用方法應(yīng)該是以下的:
    {dede:channelartlist typeid='top'}
    這里是typied='top',這個top值可以換為你想要的上級欄目ID,但絕對是不可以為空的。這個大家一定要注意!
    3、欄目高亮、特效調(diào)用
    在該標(biāo)簽下,可以直接分別用 {dede:field name='typename'/}與{dede:field name='typeurl'/}來表示欄目名稱與欄目鏈接的,當(dāng)然還有一些其它特殊的變量,這里也介紹一下,如:
    {dede:field name='id'/}與{dede:field name='typeid'/} 均表示循環(huán)中的欄目ID;
    {dede:global name='itemindex'} 表示循環(huán)遞增變量,從1開始;
    {dede:global name='itemparity'} 表示循環(huán)魔法變量,單數(shù)為1,雙數(shù)為2;
    以上就是可以在channelartlist中直接套用的,特別要注意的是第2、3兩個,擁有這兩個變量,可以輕松制作出各類非常個性的效果,例如欄目的隔行變色等。
    關(guān)于這個欄目高亮,在 channelartlist.lib.php 并沒有自帶,但通過以下DIY可實現(xiàn)讓當(dāng)前欄目進(jìn)行高亮。方法(以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'] = '';
    }
    然后,就可以在模板中進(jìn)行使用{dede:field name='currentstyle'/}進(jìn)行調(diào)用了。