在使用Dedecms进行网站开发时,实现内容页、列表页的二级栏目和三级栏目同时高亮是一项常见需求。本文将详细介绍如何通过修改核心文件和调整标签写法来实现这一功能。

效果演示如上图所示,接下来我们将逐步介绍实现教程。
1、修改include/taglib/channelartlist.lib.php
打开 include/taglib/channelartlist.lib.php 找到以下代码:
$tpsql = " reid='typeid' AND ispart<>2 AND ishidden<>1 ";
将其修改为:
if($type=='son')
{
$typeid = ( !empty($refObj->TypeLink->TypeInfos['id']) ? GetTopid($refObj->TypeLink->TypeInfos['id']) : 0 );
$tpsql = " reid='$typeid' AND ishidden<>1 ";
}
else
{
$tpsql = " reid='$typeid' AND ispart<>2 AND ishidden<>1 ";
}
2、修改include/taglib/channel.lib.php
接着,打开include/taglib/channel.lib.php 文件,找到以下代码:
if($type=='son' && $reid!=0 && $totalRow==0)
将其修改为:
if($type=='son' && $reid!=0 && $totalRow==0 && $noself=='')
3、后台设置
进入Dedecms后台,依次点击“系统” -> “其它选项”,确保去掉与PHP相关的限制设置。

4、列表页和内容页标签写法
最后,在模板中使用以下标签代码:
{dede:php}
$GLOBALS['thisid'] = intval($refObj->Fields['typeid']);
$GLOBALS['reid'] = intval($refObj->Fields['reid']);
$GLOBALS['topid'] = intval($refObj->Fields['topid']);
{/dede:php}
{dede:channelartlist type=son}
- {dede:field.typename/}
{dede:channel type=son noself=yes}
- [field:typename/]
{/dede:channel}
{/dede:channelartlist}
通过以上步骤,您可以轻松实现Dedecms中内容页、列表页的二级栏目和三级栏目同时高亮的效果。希望这篇文章对您有所帮助!