在使用Dedecms CMS系统构建网站时,许多站长会频繁使用channel标签来调用子栏目。然而,在某些情况下,我们需要调用指定栏目的子栏目,并结合currentstyle属性实现当前子栏目的高亮显示功能。遗憾的是,Dedecms默认情况下,currentstyle对typeid参数并不生效。本文将分享一种解决此问题的方法。

首先,需要修改include/taglib/channel.lib.php文件:


找到以下代码:
if( ($row['id']==$typeid || ($topid==$row['id'] && $type=='top') ) && $currentstyle!='' ) 
// 该代码通常位于108行左右
    

将上述代码替换为以下内容:


if( ( $row['id']== $refObj->TypeLink->TypeInfos['id'] || ($topid==$row['id'] && $type=='top') ) && $currentstyle!='' )
    

完成上述修改后,即可正确应用currentstyle属性。接下来是调用标签的示例:


{dede:channel typeid='3' type='son' currentstyle="
  • ~typename~
  • "}
  • [field:typename/]
  • {/dede:channel}

    通过以上设置,当前栏目的列表项将自动添加class="on"属性。您可以结合CSS样式,轻松实现当前栏目的高亮效果。

    以下是最终效果的示意图:

    图片- Dedecms 子栏目调用 Currentstyle 属性不支持 Typeid 指定 ID 解决方案

    总结来说,通过修改channel.lib.php文件并合理配置调用标签,可以成功解决Dedecms中currentstyle属性不支持typeid指定ID的问题。这一方法不仅提升了用户体验,还让网站设计更加灵活和美观。