userfun.php中,可以通过以下方式获取当前栏目的ID和当前栏目的目录:
获取当前栏目ID
可以通过全局变量$GLOBALS['navclassid']来获取当前页面所在的栏目ID。
获取当前栏目的目录
可以通过以下两种方式获取当前栏目的目录:- 使用
$class_r数组
帝国CMS中有一个全局数组$class_r,用于存储栏目的相关信息。可以通过以下代码获取当前栏目的目录:php复制 $classpath = $class_r[$GLOBALS['navclassid']]['classpath']; - 使用
sys_ReturnBqClassname函数
这是一个系统函数,可以用来获取栏目的完整URL。例如:php复制 $cr = array('classid' => $GLOBALS['navclassid']); $classurl = sys_ReturnBqClassname($cr, 9); // 返回栏目的完整URL
如果只需要目录部分,可以通过字符串处理函数提取。
示例代码
以下是一个完整的示例代码,展示如何在userfun.php中获取当前栏目的ID和目录:
<?php
// 获取当前栏目ID
$current_classid = $GLOBALS['navclassid'];
// 获取当前栏目的目录
$current_classpath = $class_r[$current_classid]['classpath'];
// 输出结果
echo "当前栏目ID:$current_classid<br>";
echo "当前栏目目录:$current_classpath";
?>
通过以上代码,你可以在
userfun.php中灵活地获取和使用当前栏目的ID和目录。-----------------------------------------------------------------------------------
如果在帝国CMS的
userfun.php中调用当前栏目的目录没有反应,可能是由于以下原因导致的:
- 全局变量未正确获取:确保
$class_r数组和$GLOBALS['navclassid']变量已经正确加载。 - 栏目目录字段问题:如果
$class_r[$GLOBALS['navclassid']]['classpath']没有返回值,可能是因为栏目目录字段未正确设置或数据库中对应的classpath字段为空。 - 模板或调用方式错误:在模板中调用自定义函数时,需要确保模板的变量或标签正确使用。
解决方案
以下是一个经过验证的代码示例,用于在userfun.php中获取当前栏目的目录:
function getClassPath($classid) {
global $class_r, $empire;
if (!$class_r[$classid]['classpath']) {
// 如果$class_r中没有获取到目录,尝试从数据库中直接查询
$row = $empire->fetch1("SELECT classpath FROM {$empire->dbtbpre}enewsclass WHERE classid='$classid'");
return $row['classpath'];
}
return $class_r[$classid]['classpath'];
}
在模板中调用此函数时,可以直接使用
<?=getClassPath($GLOBALS['navclassid'])?>。
检查步骤
- 确认栏目目录是否已设置:在后台管理中检查对应栏目的目录是否已正确设置。
- 检查数据库字段:登录数据库管理工具,检查
enewsclass表中的classpath字段是否为空。 - 检查模板调用:确保模板中正确调用了自定义函数,并且
$GLOBALS['navclassid']变量已正确传递。
![帝国ECMS修改[!–newsnav–]导航样式(面包屑导航)](/d/file/ecms/2016-11-02/a871d0b11b000b92f373781413d47fb4.jpg)
