在使用DedeCMS进行网站开发时,经常会遇到栏目较多的情况。尤其是在显示当前栏目下的二级与三级栏目时,如果三级栏目为空,系统默认会显示同级栏目。然而,从用户体验的角度出发,这种情况通常需要保持空白,即当二级栏目下的三级栏目为空时,不应显示任何内容。那么如何让DedeCMS实现这一功能呢?本文将分享两种解决方法。
{dede:channel type='son'}
### 方法一 首先,打开`include\\\\taglib\\\\channel.lib.php`文件。
找到以下代码(大约位于第109行):
if($type=='son' && $reid!=0 && $totalRow==0)
将其修改为:
if($type=='son' && $reid!=0 && $totalRow==0 && $noself=='')
完成上述修改后,还需要在调用标签中添加参数`noself='yes'`。例如:
{dede:channel type='son' row='5' noself='yes'}
接着,在模板中引用如下代码实例:


### 方法二 同样地,打开`include\\\\taglib\\\\channel.lib.php`文件。
找到第110行,注释掉以下代码段:

if($type=='son' && $reid!=0 && $totalRow==0)
{
    $sql = "SELECT id,typename,typedir,isdefault,ispart,defaultname,namerule2,moresite,siteurl,sitepath
            FROM `dede_arctype` WHERE reid='$reid' And ishidden<>1 order by sortrank asc limit 0, $line ";
    $dsql->SetQuery($sql);
    $dsql->Execute();
}
保存文件后,刷新相关页面即可看到效果。 ### 总结 通过以上两种方法,可以有效解决DedeCMS栏目调用时无子栏目不显示同级栏目的问题。大家可以根据实际情况选择适合自己的方法进行应用。无论是修改核心文件还是调整调用标签,都需注意备份原始文件,以防止意外情况发生。希望本文能帮助到正在使用DedeCMS的开发者们!