在使用DEDECMS进行网站开发时,很多开发者会遇到需要实现二级栏目功能的情况。为了调用二级栏目,通常需要借助DEDE标签嵌套的方式来完成。然而,DEDECMS多层标签调用仅支持`channelartlist`标签,这意味着我们只能通过`dede:channelartlist`标签来实现二级栏目的调用。

尽管`dede:channelartlist`标签能够成功调用所需信息,但在设置当前所在栏目高亮显示时,`currentstyle`属性却无法生效。接下来,我们将详细介绍如何解决`channelartlist`标签中`currentstyle`高亮显示的问题。

解决步骤


1. 打开文件 `/include/taglib/channelartlist.php`。

2. 找到以下代码:

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


3. 在上述代码后添加以下内容:

if($typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['id'] || $typeids[$i]['id'] == $refObj->TypeLink->TypeInfos['topid'] ){
    $pv->Fields['currentstyle'] = $currentstyle ? $currentstyle : ' class="current"';
} 
else{
    $pv->Fields['currentstyle'] = '';
}
    


4. 调用方法如下:

{dede:channelartlist typeid='top'}

    {dede:field name='typename'/}

{/dede:channelartlist}
    


注意事项


在实际操作中,请务必注意以下几点:

1. `` 这段代码中不要自行添加 `class="{dede:field.currentstyle/}"`。因为在修改后的代码中已经进行了判断:如果当前栏目为高亮状态,系统将自动输出 `class="current"`。因此,按照本文提供的代码直接复制即可解决问题。

2. 确保修改的文件路径和代码位置准确无误,否则可能导致功能失效或出现其他问题。

通过以上步骤,您可以成功解决`dede:channelartlist`标签中`currentstyle`属性无法高亮显示的问题。希望这篇文章对您有所帮助!