Dedecms支持notypeid属性的实现方法
DedeCMS(织梦内容管理系统)是一个功能强大且广泛使用的内容管理系统,默认情况下,DedeCMS的arclist标签并不支持notypeid属性,这在某些复杂场景下可能会带来不便,本文将详细介绍如何在DedeCMS中增加对notypeid属性的支持,从而实现更灵活的栏目过滤功能。
什么是notypeid属性?
在DedeCMS中,arclist标签通常用于调用指定栏目ID的文章列表,有时我们希望排除某些子栏目的文章,这时就需要使用notypeid属性,通过设置notypeid属性,我们可以方便地排除不需要显示的栏目,提高代码的可维护性和灵活性。
实现步骤
1. 修改/include/taglib/arclist.lib.php文件
找到系统的/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);
修改为:
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'));
步骤二:
找到函数lib_arclistDone
的定义位置(约168行),并添加$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)
步骤三:
找到以下代码(约321行):
$orwheres[] = ' arc.arcrank > 1 ';
在其后面增加以下代码:
if(!empty($notypeid)) { $orwheres[] = " and arc.typeid NOT IN (".GetSonIds($notypeid).")"; }
使用方法
完成上述修改后,保存文件并上传到服务器覆盖原有文件,就可以在模板中使用notypeid属性了。
{dede:arclist row=6 orderby=pubdate type='image.' imgwidth='108' imgheight='150' channelid='1' notypeid='9'}
这段代码表示调用除了栏目ID为9的所有文章列表,如果需要排除多个栏目,可以用逗号分隔,如:
{dede:arclist row=6 orderby=pubdate type='image.' imgwidth='108' imgheight='150' channelid='1' notypeid='9,10,11'}
注意事项
1、备份文件:在进行任何修改之前,务必备份原文件,以防修改出错时可以恢复。
2、检查语法:确保修改后的代码没有语法错误,否则可能导致系统无法正常运行。
3、测试环境:建议先在测试环境中进行修改和测试,确认无误后再应用到生产环境。
通过以上步骤,我们成功为DedeCMS的arclist标签增加了notypeid属性,使得栏目管理更加灵活和便捷,希望这一改进能为各位站长在网站开发过程中提供便利。
相关问答FAQs
Q1: 为什么需要增加notypeid属性?
A1: DedeCMS默认只支持typeid属性来调用指定栏目的文章列表,但有时我们需要排除某些子栏目的文章,通过增加notypeid属性,可以实现这种排除功能,使代码更简洁、易维护。
Q2: 修改文件后如何确保系统正常运行?
A2: 在正式应用修改前,建议先在测试环境中进行全面测试,确保新增功能正常工作且不影响其他功能,每次修改后都应备份文件,以便在出现问题时能够快速恢复。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1115499.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复