帝国cms怎么调用当前栏目的顶级栏目名称获取方法
1. 使用内置变量和SQL查询获取顶级栏目名称
帝国CMS中每个栏目都有一个bclassid字段表示其父栏目ID。通过循环查找直到父ID为0,即可得到顶级栏目。
在内容页或列表页模板中启用“使用程序代码”后,可插入以下PHP代码:
<?php
$cr = $empire->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语句简化逻辑:
<?php
$classid = $GLOBALS['navclassid'];
while($classid != 0) {
$classr = $empire->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 '';
}
然后在模板中调用:
<?php echo getTopClassname($GLOBALS['navclassid']); ?>






