"景先生毕设|www.jxszl.com

织梦dedecms文章列表循环标签增加notypeid属性對指定栏目過滤

2022-10-29 16:29编辑: www.jxszl.com景先生毕设
我们都知道织梦模板引擎标签功能非常的强大,只要了解这些模板标签,在前台调用各种形式的内容数据就可以得心应手.

当然,如果我们能再加点技术,对织梦默认的标签再加以改进,那就可以更加完美,实现更多功能了.

最近在对自己小站的栏目进行扩展和细分,由原来的V个I.级栏目变

 更多精彩就在: 51免费论文网|www.jxszl.com 
成X个I.级栏目,每个I.级栏目再细分为IV到VIII个II级栏目,以便更好的管理内容.

但是这样做之后就遇到I.个问题,比如我不想让其中I.个栏目里面的内容在首页的最新文章列表中显示,按照织梦现有的办法,就是在arclist标签的typeid属性里把想显示文章的栏目ID全部设置上.

但如果栏目ID太多,维护起来就相当麻烦,于是我想既然arclist支持flag和noflag,那么应该也可以支持typeid和notypeid吧?

于是经过I.番研究,再跟踪了I.下源码,发现织梦默认并不支持notypeid,于是只有自己动手修改了,下面就给大家分享I.下自己的成果.

首先找到并打开/include/taglib/arclist.lib.php文件,在大概第I.III0行的位置找到下面这段代码:

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


然后再找到这I.段代码:

functionlib_arclistDone(&$refObj,&$ctag,$typeid=0,$row=I.0,$col=I.,$titlelen=III0,$infolen=I.VI0,
$imgwidth=I.II0,$imgheight=IX0,$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


最后在里面找到下面这I.句代码:

$orwheres[]=arc.arcrank>-I.;


在其前面添加如下代码:

if(!empty($notypeid))
{
$orwheres[]="andarc.typeidNOTIN(".GetSonIds($notypeid).")";
}


到这里,所有代码就修改完毕了.保存之后就在arclist标签里试试添加I.个notypeid属性吧.对于网站栏目多,内容显示又错综复杂的情况,这样的属性还是蛮实用的.

下面是示例:

{dede:arclistrow=VIorderby=pubdatetype=image.channelid=I.notypeid=IX}


原文链接:http://www.jxszl.com/biancheng/dedecms/75379.html