首頁 >CMS教程 >DEDECMS >怎麼讓織夢artlist標籤增加notypeid屬性實作欄位過濾

怎麼讓織夢artlist標籤增加notypeid屬性實作欄位過濾

藏色散人
藏色散人原創
2019-12-02 09:44:141705瀏覽

怎麼讓織夢artlist標籤增加notypeid屬性實作欄位過濾

怎麼讓織夢artlist標籤增加notypeid屬性實作欄位過濾?

織夢的標籤功能非常強大,只要熟悉這些標籤,在前台調用各種形式的後台資料就能得心應手。當然,如果能懂點技術,對織夢的標籤再加以改進,那就更完美了。

推薦學習:織夢cms

我最近在對自己小站的欄位進行擴展和細分,由原來的七個一級欄變成十二個一級欄目,每個一級欄位再細分為四到八個二級欄目,以便更好的管理內容。

但我遇到了一個問題,其中一個欄位我不想讓它在首頁的最新文章列表中顯示,按照織夢現有的辦法,就是在arclist標籤的typeid屬性裡把想顯示文章的欄ID全部設定上,但這樣做欄位ID太多了,以後維護起來也麻煩,於是我想既然arclist支援flag和noflag,那麼應該也要支援typeid 和notypeid吧?

經過一番測試,再追蹤了一下源碼,發現織夢並不支援notypeid,那怎麼辦?自己寫吧!

開啟/include/taglib/arclist.lib.php文件,找這段程式碼(大概在130行):

return lib_arclistDone 
       ( 
         $refObj, $ctag, $typeid, $ctag->GetAtt('row'), $ctag->GetAtt('col'), $titlelen, $infolen, 
         $ctag->GetAtt('imgwidth'), $ctag->GetAtt('imgheight'), $listtype, $orderby, 
         $ctag->GetAtt('keyword'), $innertext, $envs['aid'], $ctag->GetAtt('idlist'), $channelid, 
         $ctag->GetAtt('limit'), $flag,$ctag->GetAtt('orderway'), $ctag->GetAtt('subday'), $ctag->GetAtt('noflag'), 
         $tagid,$pagesize,$isweight         
     );

在最後括號最後加上(注意前面的逗號):

,$ctag->GetAtt('notypeid')

然後再找到這段程式碼(大概在168行):

function lib_arclistDone(&$refObj, &$ctag, $typeid=0, $row=10, $col=1, $titlelen=30, $infolen=160, 
        $imgwidth=120, $imgheight=90, $listtype='all', $orderby='default', $keyword='', 
        $innertext='', $arcid=0, $idlist='', $channelid=0, $limit='', $att='', $order='desc', $subday=0, $noflag='',$tagid='', $pagesize=0, $isweight='N')

在括號的最後加上(注意前面的逗號):

,$notypeid=0

最後再找到這一句:

$orwheres[] = ' arc.arcrank > -1 ';

在其前面增加以下程式碼:

if(!empty($notypeid))  
{ 
    $orwheres[] = " and arc.typeid NOT IN (".GetSonIds($notypeid).")"; 
}

這樣,程式碼就修改完畢了。儲存之後就在arclist標籤裡試試看notypeid屬性吧。對於網站欄位多,內容顯示時又錯綜複雜的情況,這樣的屬性還蠻實用的。

使用方法:

程式碼如下:

{dede:arclist row=6 orderby=pubdate type='image.' imgwidth='108' imgheight='150' channelid='1' notypeid='9'}

以上是怎麼讓織夢artlist標籤增加notypeid屬性實作欄位過濾的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn