在使用Dedecms进行网站开发时,许多用户会发现默认模板中的channelartlist标签并不支持currentstyle属性。这一功能在导航栏中非常实用,可以实现当前页面的栏目高亮显示效果。下面我们将详细介绍如何修改Dedecms源代码以支持这一功能。

首先,我们需要编辑Dedecms的核心文件来实现这一目标。具体步骤如下:

打开文件:
include\\taglib\\channelartlist.lib.php
找到以下代码:

$pv->Fields['typeurl'] = GetOneTypeUrlA($typeids[$i]);

在此行代码下方添加以下内容:

//让channelarclist支持currentstyle属性
if($typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['id'] || $typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['topid'] ){
    $pv->Fields['currentstyle'] = $currentstyle ? $currentstyle : 'nLi on';
} 
else{
    $pv->Fields['currentstyle'] = 'nLi';
}
//让channelarclist支持currentstyle属性end

需要注意的是,网上大多数教程可能忽略了$typeids[$i]['id'] ==$refObj->TypeLink->TypeInfos['topid']这部分代码。只有添加这一部分,才能确保对二级栏目也生效。

接下来,我们来看一下调用方法:

{dede:channelartlist typeid='2' currentstyle='current'}
  • {dede:field name='typename'/}
  • ... {/dede:channelartlist}

    如果当前栏目为活动状态,则

  • 标签的class属性将显示为“current”。否则,默认显示为空。当然,您也可以根据需要自定义类名,只需修改currentstyle='这里改为您需要的类名'即可。

    通过以上步骤,您可以轻松地在Dedecms中实现channelartlist标签支持currentstyle属性的功能,从而提升用户体验和网站的专业性。