在帝国CMS的
userfun.php
中,可以通过以下方式获取当前栏目的ID和当前栏目的目录:
获取当前栏目ID
可以通过全局变量
$GLOBALS['navclassid']
来获取当前页面所在的栏目ID。
获取当前栏目的目录
可以通过以下两种方式获取当前栏目的目录:
使用$class_r
数组
帝国CMS中有一个全局数组$class_r
,用于存储栏目的相关信息。可以通过以下代码获取当前栏目的目录:
$classpath = $class_r[$GLOBALS['navclassid']]['classpath'];
使用sys_ReturnBqClassname
函数
这是一个系统函数,可以用来获取栏目的完整URL。例如:
$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']
变量已正确传递。
如果问题仍未解决,建议检查服务器的错误日志或帝国CMS的日志文件,以获取更详细的错误信息。