
在使用帝国CMS进行网站开发时,经常需要获取当前栏目的顶级栏目名称,用于页面标题、导航面包屑或SEO优化。以下是几种常用的调用方法,适用于模板中直接使用PHP代码的情况。
1. 使用内置变量和SQL查询获取顶级栏目名称
帝国CMS中每个栏目都有一个bclassid字段表示其父栏目ID。通过循环查找直到父ID为0,即可得到顶级栏目。
在内容页或列表页模板中启用“使用程序代码”后,可插入以下PHP代码:
fetch1("SELECT * FROM {$dbtbpre}enewsclass WHERE classid='$GLOBALS[navclassid]'");
$topbclassid = $cr['bclassid'];
if($topbclassid == 0) {
$topclassid = $GLOBALS['navclassid'];
} else {
while($topbclassid != 0) {
$cr2 = $empire->fetch1("SELECT * FROM {$dbtbpre}enewsclass WHERE classid='$topbclassid'");
if($cr2['bclassid'] == 0) {
$topclassid = $topbclassid;
break;
} else {
$topbclassid = $cr2['bclassid'];
}
}
}
$topclassr = $empire->fetch1("SELECT classname FROM {$dbtbpre}enewsclass WHERE classid='$topclassid'");
echo $topclassr['classname'];
?>2. 简化版:直接通过SQL一次查询获取顶级栏目
如果栏目层级不深(如最多三级),可以通过一条SQL语句简化逻辑:
fetch1("SELECT classid, bclassid, classname FROM {$dbtbpre}enewsclass WHERE classid='$classid'");
if($classr['bclassid'] == 0) {
echo $classr['classname']; // 输出顶级栏目名称
break;
}
$classid = $classr['bclassid'];
}
?>3. 在自定义函数中封装(推荐)
将功能封装成函数更便于复用。打开e/functions/userfun.php文件,添加:
function getTopClassname($classid) {
global $empire, $dbtbpre;
while($classid != 0) {
$r = $empire->fetch1("SELECT bclassid, classname FROM {$dbtbpre}enewsclass WHERE classid='$classid'");
if($r['bclassid'] == 0) {
return $r['classname'];
}
$classid = $r['bclassid'];
}
return '';
}
然后在模板中调用:
4. 注意事项
- 确保模板支持PHP代码执行(后台 → 系统参数设置 → 模板 → 开启“使用PHP代码”)
- 若在JS或静态页面中使用,请结合动态标签或AJAX方式输出
- 对于缓存性能要求高的站点,建议对结果做缓存处理
基本上就这些方法,根据实际需求选择合适的方式即可。










