在使用Dedecms进行CMS模板开发时,经常会用到 dede:channelartlist 标签来自动调用栏目内容。然而,在实际应用中,我们可能希望排除某些不需要显示的栏目,例如“关于我们”或“联系我们”等静态页面。为了实现这一需求,我们需要对Dedecms的核心代码进行修改,使 dede:channelartlist 支持排除指定的typeid。
首先,打开文件:
\\\\include\\\\taglib\\\\channelartlist.lib.php
找到以下代码:
$attlist = 'typeid|0,row|20,cacheid|';
将其修改为:
$attlist = 'typeid|0,row|20,cacheid|,notypeid|0'; // 添加了一个排除typeid的参数 - notypeid
接下来,继续查找以下代码:
$dsql->SetQuery("Select id, typename, typedir, isdefault, ispart, defaultname, namerule2, moresite, siteurl, sitepath from `dede_arctype` where $tpsql order by sortrank asc limit $totalnum");
在其前面添加以下代码:
// 否定指定ID
if($notypeid != 0) {
$tpsql = $tpsql . " and not(id in($notypeid)) ";
}
完成上述修改后,您可以在模板中使用以下调用方式:
{dede:channelartlist typeid='7' notypeid='8'}
其中,notypeid='8' 表示排除ID为8的子栏目。如果您只需要单独使用 notypeid 或 typeid,也可以分别设置它们的值。
通过以上步骤,您可以轻松实现 dede:channelartlist 的自定义功能,灵活控制栏目的显示与隐藏。这对于优化网站结构和用户体验具有重要意义。
注意:在修改核心文件之前,请确保备份原始文件,以防止因误操作导致系统无法正常运行。