我们已经准备好了,你呢?

我们与您携手共赢,为您的企业形象保驾护航!

在织梦CMS中,可以通过为{dede:artlist}标签增加notypeid属性来过滤特定栏目。

织梦CMS(DedeCMS)是一款广泛使用的内容管理系统,其标签功能非常强大,通过这些标签可以在前台调用各种形式的后台数据,有时候我们需要在调用文章列表时排除某些特定的栏目,为了实现这一需求,我们可以对织梦CMS的arclist标签进行二次开发,增加notypeid属性来实现栏目过滤。

修改步骤

1、打开文件

找到并打开/include/taglib/arclist.lib.php文件。

2、修改函数返回值

在文件中找到以下代码段(大约在第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'),如下所示:

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

3、修改函数参数

在文件中再次找到以下代码段(大约在第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,如下所示:

     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)

4、添加条件过滤

在文件中再次找到以下代码段(大约在第321行):

     $orwheres[] = ' arc.arcrank > 1 ';

在其后面增加以下代码:

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

5、保存文件

完成上述修改后,保存文件。

使用方法

在模板中使用arclist标签时,可以添加notypeid属性来排除指定栏目的文章。

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

如果需要过滤多个栏目,可以使用逗号分隔多个栏目ID,

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

注意事项

在进行上述修改前,请确保已备份原文件,以防修改出错时能够恢复。

修改完成后,建议在测试环境中进行充分测试,确保功能正常后再应用到生产环境。

FAQs

问题1:如何撤销对arclist标签的修改?

答:要撤销对arclist标签的修改,只需将之前修改过的/include/taglib/arclist.lib.php文件中的相关部分还原为原始状态即可,具体步骤如下:

1、还原函数返回值

将以下代码段还原为原始状态:

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

2、还原函数参数

将以下代码段还原为原始状态:

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

3、移除条件过滤

将以下代码段还原为原始状态:

     $orwheres[] = ' arc.arcrank > 1 ';

4、保存文件

完成上述还原后,保存文件。

问题2:如何在多语言网站中使用notypeid属性?

答:在多语言网站中使用notypeid属性的方法与普通网站相同,只需在模板中使用arclist标签时,添加notypeid属性来排除指定栏目的文章即可。

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

如果需要过滤多个栏目,可以使用逗号分隔多个栏目ID,

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

这样,无论是在哪种语言环境下,都可以实现对指定栏目的过滤。

属性名 描述 示例
notypeid 通过指定类型ID过滤不显示该类型ID对应的文章{dede:artlist typeid='' notypeid='1,2,3'}/
notypeid的值可以是单个ID或多个ID,用逗号分隔 排除ID为1、2、3的文章,则设置为notypeid=’1,2,3′
若不指定notypeid属性,则不进行类型ID过滤{dede:artlist typeid=''}/
notypeid属性可以与typeid属性结合使用,进行更精确的过滤{dede:artlist typeid='1' notypeid='2,3'}/
免责声明:本站内容(文字信息+图片素材)来源于互联网公开数据整理或转载,仅用于学习参考,如有侵权问题,请及时联系本站删除,我们将在5个工作日内处理。联系邮箱:chuangshanghai#qq.com(把#换成@)

我们已经准备好了,你呢?

我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

132-7207-3477

上班时间

周一到周五

二维码
线