使用灵动标签或sys_GetSonClass函数可调用当前栏目的子栏目;2. 通过嵌套[e:loop]可进一步获取各子栏目下的最新文章,提升导航清晰度与用户体验。
在使用帝国CMS建站时,经常需要在当前栏目页调用其子栏目列表或子栏目下的文章内容。实现这个功能可以提升网站导航结构的清晰度和用户体验。下面介绍如何正确调用当前栏目的子栏目以及子栏目中的文章。
调用当前栏目的子栏目
在模板中(如封面页、列表页)使用灵动标签
[e:loop]
或系统自带的
sys_GetSonClass
函数来获取子栏目。
方法一:使用灵动标签判断当前栏目是否有子栏目并循环输出
说明:
表示获取当前所处栏目的子栏目。
若要在非内容页或非列表页中使用,需确保
能正确获取当前栏目ID,否则可手动传入父级栏目ID。
如果已知父栏目ID(例如5),可替换为
。
方法二:使用系统函数
sys_GetSonClass
适用于更简洁调用场景,在模板中直接写 PHP 代码(需开启支持PHP代码):
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
调用子栏目下的文章内容
在获取到子栏目后,通常还需要展示每个子栏目中的最新几篇文章。
使用灵动标签循环子栏目,并嵌套查询各子栏目下的信息:
说明:
外层循环输出子栏目名称与链接。
内层循环调用该子栏目下的文章(以新闻模型为例,表名为 e
cms
_news)。
表示每子栏目最多显示5篇文章。
注意检查数据表名是否包含前缀,且模型类型对应正确(如下载模型用 ecms_download)。
注意事项
实际应用中需要注意以下几点:
确保当前页面所在的栏目确实有子栏目,否则不会输出任何内容。
在首页或其他非栏目页调用时,
可能为空,建议通过条件判断或指定父ID处理。
若模板不支持PHP代码,请优先使用灵动标签方式。
静态化环境下,修改后需重新生成相关页面才能看到效果。
基本上就这些,掌握好栏目关系和SQL逻辑,就能灵活调用子栏目及其内容。
[e:loop={"select classid, classname, classpath from [!db.pre!]enewsclass where bclassid='$GLOBALS[navclassid]' order by myorder",0,24,0}]
$bqr[classname]
[/e:loop]
bclassid='$GLOBALS[navclassid]'$GLOBALS[navclassid]bclassid='5'
query("select classid, classname, classpath from ".DB_PRE."enewsclass where bclassid='$bclassid' order by myorder");
while($r = $empire->fetch($sql)){
echo "".$r['classname']." ";
}
?>
[e:loop={"select classid, classname, classpath from [!db.pre!]enewsclass where bclassid='$GLOBALS[navclassid]' order by myorder",0,24,0}]
$bqr[classname]
[e:loop={"select * from [!db.pre!]ecms_news where classid=$bqr[classid] order by newstime desc limit 5",10,24,0}]
- ">=$bqr['title']?>
[/e:loop]
[/e:loop]
limit 5$GLOBALS[navclassid]