DedeCMS增加notypeid属性以如何实现过滤栏目

柴门鸟雀噪,归客千里至。光明顶下来,一路听着阵阵松涛,我们走过西海,飞来石,天海,爬过百步云梯,伴着凤凰松迎客松的多姿到了玉屏峰。玉屏峰犹如一道屏障,山面光滑如镜子,如屏风,还不时有几个斗大的字,说是哪位名人留下的。玉屏峰最险的地方是在一线天,上下达七八十度的落差,台阶狭,仅容一人,台阶窄,仅托一足,百米长,走多了,腿便打抖了,害怕了,还不时地叫着好刺激呀。

余斗最近在做一个网站的时候,因为要在首页调用全站最新栏目,所以在arclist标签中把typeid属性设置为rand,生成首页后,发现自己不想调用的栏目也被调用出来,如果要单独去掉这个栏目就要在typeid中把我想要的栏目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='',
	

在括号的最后加上(注意前面的逗号):

	
	,$notypeid=0
	

最后再找到这一句(大概在321行):

	
	$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'}
	

如果要过滤多个栏目则可以这样:

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

以上就是DedeCMS增加notypeid属性以如何实现过滤栏目。挺过这段难熬的时间,相信糟糕的日子熬过去了,剩下的就是好运气 。更多关于DedeCMS增加notypeid属性以如何实现过滤栏目请关注haodaima.com其它相关文章!

标签: DedeCMS