如何让织梦dedecms只显示顶级栏目下的文章列表不显示子栏目的文章

织梦调用栏目的文章列表标签都知道, {dede:arclist typeid=’99’ row=’10’} ,typeid填写的是要调用栏目的id值,但是我们在调整网站时往往只需要顶级栏目的文章列表,不需要子栏目下面的文章列表,这种方式只要顶级栏目id值一样,统统都会显示在文章列表中,今天和大家说一下文章列表中如何取消子栏目文章的显示。

调用文章列表标签: {dede:arclist typeid=’99’ row=’10’ notypeid=’1,2,3′} , notypeid 便是子栏目的id值。还需要修改php文件, 打开/include/taglib/arclist.lib.php文件,找这段代码(大概在129行) :

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 );

$isweight 后面加入‘ ,$ctag->GetAtt(‘notypeid’) ’,注意 $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’)

$isweight=’N’后面增加‘,$notypeid=0’,不敢漏掉逗号。第三部找到 $orwheres[] = ‘ arc.arcrank > -1 ‘; ,在其前面增加下面代码:

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

好了,这下就修改完成,可以试一下 {dede:arclist typeid=’99’ row=’10’ notypeid=’1,2,3′}就可以使用了, notypeid 后面的赋值也生效了。多个栏目使用英文状态下的逗号分开。