如何在织梦cms的dede:artlist标签中添加notypeid属性以实现栏目过滤?

织梦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、还原函数返回值

如何在织梦cms的dede:artlist标签中添加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
     );

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

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1202955.html

(0)
未希的头像未希新媒体运营
上一篇 2024-10-11 14:20
下一篇 2024-10-11 14:21

相关推荐

  • 如何通过PHP逻辑调用dede:field.price来控制显示原价和优惠价?

    在织梦内容页文档页中,使用PHP逻辑调用dede:field.price来控制显示原价和优惠价。

    2024-10-08
    042
  • 如何有效阻止织梦CMS内容被非法采集?

    织梦CMS如何防采集了解采集原理在了解如何防止采集之前,首先需要了解采集的原理,采集主要是通过自动化工具(如爬虫)抓取网站内容,然后进行存储和发布,以下是常见的几种采集方式:1、直接抓取:通过分析网页源代码,直接提取所需内容,2、模拟浏览器行为:使用模拟浏览器的方式,模拟用户操作,如点击、滚动等,3、API接口……

    2024-10-05
    02
  • 如何利用arclist标签在织梦CMS中独立展示单表模型的文档列表?

    您提到的“织梦标签:arclistsg 独立单表模型文档列表”似乎是指使用织梦CMS(DedeCMS)时,通过特定的标签来调用独立单表模型中的文档列表。由于我无法直接访问或查询实时的数据库或特定网站的后台设置,因此无法提供精确的标签代码或配置步骤。,,如果您需要生成一个基于织梦CMS的arclist标签来调用独立单表模型中的文档列表,您可以参考以下通用格式:,,“html,{dede:arclist type=’commend’ row=’10’ titlelen=’60’ orderby=’pubdate’},[field:title/],{/dede:arclist},“,,这只是一个示例,并且可能需要根据您的具体需求和数据库结构进行调整。在实际应用中,您需要将上述代码添加到您的织梦CMS模板文件中,并根据需要进行适当的修改。,,如果您提到的“arclistsg”是您自定义的标签或者有特殊的含义,那么我可能无法准确地理解您的需求。在这种情况下,建议您查阅织梦CMS的官方文档或者咨询相关领域的专家以获取更准确的帮助。,,由于我无法直接与您的系统进行交互或查看您的数据库结构,因此无法保证上述代码能够完全满足您的需求。如果您遇到任何问题或困难,请随时联系专业的开发人员或技术支持团队寻求帮助。

    2024-10-14
    05
  • 如何轻松安装织梦dedecms,一步步图文教程指南?

    好的,以下是根据您提供的内容生成的一段回答:,织梦dedecms安装图文教程,请按照以下步骤进行操作。

    2024-10-07
    09

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

免费注册
电话联系

400-880-8834

产品咨询
产品咨询
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入