怎麼讓織夢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中文網其他相關文章!