
在使用帝国CMS进行网站开发时,经常需要获取当前栏目的顶级栏目名称,用于页面标题、导航面包屑或SEO优化。以下是几种常用的调用方法,适用于模板中直接使用PHP代码的情况。
帝国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'];
?>如果栏目层级不深(如最多三级),可以通过一条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'];
}
?>将功能封装成函数更便于复用。打开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']); ?>
基本上就这些方法,根据实际需求选择合适的方式即可。
以上就是帝国cms怎么调用当前栏目的顶级栏目名称_帝国cms顶级栏目名称获取方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号