使用$classid判断当前栏目,通过比较循环中栏目ID与当前页面$classid是否一致,决定是否添加高亮类名,实现导航栏当前栏目高亮。

帝国CMS实现导航栏当前栏目高亮,核心是利用系统内置的变量和条件判断来识别当前所在栏目,并为其添加对应的CSS样式。只要理解栏目ID和页面状态的判断逻辑,就能轻松实现高亮效果。
1. 使用$classid判断当前栏目
在模板中输出导航时,通过比较循环中的栏目ID与当前页面的$classid是否一致,来决定是否添加高亮类名。
示例代码:
- [e:loop={"select classid,classname,classpath from [!db.pre!]enewsclass where bclassid=0 order by myorder",0,24,0}] >=stripSlashes($bqr['classname'])?> [/e:loop]
2. 区分首页和其他页面
首页没有$classid,需要单独判断$navclassid是否为空或使用自定义标识。
改进后的判断方式:
3. 使用CSS控制高亮样式
在页面CSS中定义.on类的样式,比如改变文字颜色、背景或加下划线。
- .navbar a { color: #333; } .navbar a.on { color: #f00; font-weight: bold; }
将生成的导航放入带有统一类名(如navbar)的容器中,便于整体控制。
4. 多级栏目也适用
如果是子栏目,可以判断当前栏目是否属于某个父栏目下的子类,实现父栏目菜单持续高亮。
例如:
- if($class_r[$GLOBALS['navclassid']]['bclassid'] == $bqr['classid']) { $current = ' class="on"'; }
这样即使进入二级页面,一级导航依然能保持高亮状态。
基本上就这些。关键是抓住$classid和$navclassid的使用场景,配合简单的PHP判断,再用CSS美化,就能让导航清晰反映当前位置。不复杂但容易忽略细节。










