如何让dedecms的arclist支持notypeid属性不调用指定栏目

如何让dedecms的arclist支持notypeid属性不调用指定栏目

阅读数: 时间:2018-10-13 来源:发菜管理系统 标签: 织梦教程 织梦内容管理系统 dedecms
    大家好,我是发菜,我们在用dedecms做网站的时候,可能会遇到一个问题,比如我不想让其中一个栏目里面的内容在首页的最新文章列表中显示,按照织梦现有的办法,就是在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')
然后再找到这一段代码:

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属性吧。对于网站栏目多,内容显示又错综复杂的情况,这样的属性还是非常有用的。

下面是示例:
调用ID为1、2的内容,不调用ID为3、4的内容。

{dede:arclist row=6 typeid='1,2' notypeid='3,4'}[field:title/]{/dede:arclist}

推荐文章/ Related products

最新案例/ LATEST CASES

发菜网络工作室外贸建站专注企业外贸网站设计制作

提供专业的外贸网站设计、小语种站群、Google ADS推广、谷歌SEO优化、AI大数据营销、SNS社媒营销
立即咨询
X微信咨询

截屏,微信识别二维码

微信号:gdfacai

(点击微信号复制,添加好友)

  打开微信

微信号已复制,请打开微信添加咨询详情!
电话咨询
在线客服
微信咨询
关注我们
在线留言
返回顶部
关闭

网站需求

您的公司
您的姓名*
您的手机*
您的需求
感谢您的咨询,我们会尽快给您回复!