1. 程式人生 > 其它 >dedecms呼叫【同級或下級】欄目的方法,channelartlist在列表頁和內容頁呼叫【同級或下級】欄目文章

dedecms呼叫【同級或下級】欄目的方法,channelartlist在列表頁和內容頁呼叫【同級或下級】欄目文章

使用織夢dedecms時,想在列表頁和內容頁呼叫同級欄目的文章,當然可以使用

{dede:channelartlist typeid=‘1’ row='5'}

的方法,指定欄目id,但是要自動判斷當前欄目的同級欄目就沒辦法了或者需要給每個頂級欄目分配一個模板,這樣很麻煩。

本文將給一種更簡單的辦法:

1.找到\include\taglib\channelartlist.lib.php 檔案,查詢:

 $attlist = 'typeid|0,row|20,cacheid|'; 

修改為:

$attlist = 'typeid|0,row|20,cacheid|,type|';     //這邊加個 type 實現 在子欄目下呼叫   同級子欄目的

然後查詢:

if($typeid==0 || $typeid=='top') {
        $tpsql = " reid=0 AND ispart<>2 AND ishidden<>1 AND channeltype>0 ";
}

修改為:

if($type=='reid')    //呼叫上級目錄下的子欄目內容
{        
        $reid = $refObj->TypeLink->TypeInfos['reid']; //同級下的欄目
        //$reid = $refObj->TypeLink->TypeInfos['id']; //同級下的子欄目      
        $tpsql = " reid='$reid' AND ispart<>2 AND ishidden<>1 ";
} else if ($typeid==0 || $typeid=='top') {
        $tpsql = " reid=0 AND ispart<>2 AND ishidden<>1 AND channeltype>0 ";
}

儲存上面檔案。然後在列表頁或者內容頁使用:

{dede:channelartlist type='reid' row='5'}
底層迴圈程式碼
{/dede:channelartlist} 

就可以方便呼叫了。