在使用DedeCMS模板构建网站时,如果需要调用导航栏的二级栏目,通常会使用`channelartlist`标签。然而,当某个栏目下没有二级栏目时,可能会生成一个空的DIV。为了解决这个问题,以下提供了一种实用的方法。
最新版本的DedeCMS默认禁用了模板中的PHP运行功能。要启用它,请进入后台管理:系统 → 系统基本参数 → 其他选项 → 默认模板引擎禁用标签,将“php”从禁用列表中移除即可。
接下来,您可以使用以下代码来实现动态判断和输出:

{dede:channelartlist typeid='top'}
  • {dede:field name='typename'/} {dede:php} $id = $refObj->Fields['id']; $sql = ("SELECT * FROM dede_arctype where reid ='$id'"); $db->SetQuery($sql); $db->Execute(); if($db->GetTotalRow()){ echo '
      '; while($row = $db->GetArray()){ $url = str_replace('{cmspath}','',($row[typedir])); echo "
    • ".$row[typename]."
    • "; }; echo '
    '; }; {/dede:php}
  • {/dede:channelartlist}

    这段代码的作用是遍历顶级栏目,并检查每个栏目是否有子栏目。如果有子栏目,则生成对应的HTML结构;如果没有子栏目,则不会生成多余的DIV或UL标签。
    如果您还希望了解如何实现二级栏目的高亮显示效果,可以参考相关教程进行设置。确保您的网站不仅功能完善,而且用户体验更佳。 通过以上方法,您可以有效避免因栏目层级不同而产生的多余HTML元素问题,从而优化网站结构,提升SEO表现。