在帝国CMS中调用栏目缩略图是一个常见需求,尤其适用于首页栏目导航、列表页展示等场景,栏目缩略图通常存储在enewsclass
表的classimg
字段中,通过合理的调用方法可以灵活实现不同场景的展示效果,以下将详细介绍多种调用方式、参数配置及注意事项。

基础调用方法
帝国CMS调用栏目缩略图最常用的方法是使用GetClassHtml
或sys_GetClassHtml
函数,结合模板标签实现,以下是核心代码示例:
[e:loop={"select classid,classname,classimg from phome_enewsclass where bclassid=0 order by myorder",0,24,0}] <img src="<?=$bqr[classimg]?>" alt="<?=$bqr[classname]?>" /> [/e:loop]
代码解析:
select
语句:从phome_enewsclass
(表前缀可能不同)表中查询classid
(栏目ID)、classname
(栏目名称)、classimg
(缩略图路径)字段,bclassid=0
表示调用顶级栏目。e:loop
:帝国CMS循环标签,0
表示不限制记录数,24
为显示条数,0
为操作类型。$bqr[classimg]
:直接输出栏目缩略图路径,若未上传缩略图则显示为空。
带条件判断的调用
实际应用中常需判断栏目是否上传缩略图,未上传时显示默认图片,可通过以下代码实现:
[e:loop={"select classid,classname,classimg from phome_enewsclass where bclassid=0",0,24,0}] <?php $imgsrc = $bqr[classimg] ? $bqr[classimg] : '/images/default.jpg'; // 默认图片路径 ?> <img src="<?=$imgsrc?>" alt="<?=$bqr[classname]?>" /> [/e:loop]
优化点:

- 使用三元运算符判断
classimg
是否存在,不存在则调用默认图片。 - 默认图片需提前上传至网站指定目录(如
/images/
)。
使用函数封装调用
为提高代码复用性,可将调用逻辑封装为函数,在模板中直接调用,在e/class/t_functions.php
中添加以下函数:
function getClassImg($classid, $defaultImg = '/images/default.jpg') { $classr = $empire->fetch1("select classimg from {$dbtbpre}enewsclass where classid=$classid"); return $classr['classimg'] ? $classr['classimg'] : $defaultImg; }
模板中调用方式:
<img src="<?=getClassImg($GLOBALS[navclassid])?>" alt="<?=$GLOBALS[ classname]?>" />
优势:
- 支持动态传入栏目ID,适用于子栏目调用。
- 统一管理默认图片,避免重复代码。
结合栏目导航的调用
在栏目导航中调用缩略图,需结合[class]
标签实现。

<ul> [class]0[/class] </ul>
对应栏目模板(class/indexxxx.php
)中:
<li> <a href="<?=$class_r[$bqr[classid]][classpath]?>"> <img src="<?=$class_r[$bqr[classid]][classimg]?>" alt="<?=$class_r[$bqr[classid]][classname]?>" /> <span><?=$class_r[$bqr[classid]][classname]?></span> </a> </li>
注意事项:
$class_r
数组存储了栏目完整信息,包括classpath
(栏目路径)、classimg
等。- 需确保栏目在后台已填写“栏目链接地址”(即
classpath
)。
不同场景的调用参数
根据需求调整调用参数,可实现多样化展示:
场景需求 | 调用代码 | 说明 |
---|---|---|
调用指定栏目缩略图 | <?=$class_r[1][classimg]?> |
1 为栏目ID,直接输出单张图片 |
调用子栏目缩略图 | [e:loop={"select classid,classname,classimg from phome_enewsclass where bclassid=$GLOBALS[navclassid]",0,24,0}] |
仅显示当前栏目的子栏目缩略图 |
带样式的缩略图 | <img src="<?=$bqr[classimg]?>" class="class-img" /> |
配合CSS实现样式控制 |
常见问题解决
-
缩略图不显示
- 检查
classimg
字段是否为空:在后台“管理栏目”中确认是否上传了缩略图。 - 确认图片路径是否正确:若使用绝对路径(如
http://xxx.com/img.jpg
),需确保图片可访问。 - 检查目录权限:上传目录(如
/e/data/images/
)需具备读写权限。
- 检查
-
调用子栏目缩略图失败
- 确认
bclassid
参数是否正确:应为父栏目ID,可通过$GLOBALS[navclassid]
获取当前栏目ID。 - 检查子栏目是否设置了“外部链接”:若子栏目为外部链接,可能需要额外处理逻辑。
- 确认
相关问答FAQs
问题1:为什么栏目缩略图调用后显示为空白?
解答:通常是由于未上传缩略图或图片路径错误导致,请进入帝国CMS后台,依次点击“栏目管理”→对应栏目→“修改栏目”,在“栏目图片”字段上传本地图片或填写网络图片地址,若使用本地图片,需确保图片已上传至网站目录(如/e/data/images/
),且路径格式正确(如/e/data/images/2023/123.jpg
),检查图片文件是否存在损坏或服务器是否禁止访问该目录。
问题2:如何调用当前栏目的父栏目缩略图?
解答:可通过查询当前栏目的父栏目ID(bclassid
)来获取其缩略图,具体代码如下:
<?php $parentid = $GLOBALS[navclassid] ? $empire->fetch1("select bclassid from {$dbtbpre}enewsclass where classid=$GLOBALS[navclassid]")['bclassid'] : 0; $parentimg = $empire->fetch1("select classimg from {$dbtbpre}enewsclass where classid=$parentid")['classimg']; ?> <img src="<?=$parentimg ?: '/images/default.jpg'?>" alt="父栏目缩略图" />
代码说明:首先通过当前栏目ID($GLOBALS[navclassid]
)查询其父栏目ID(bclassid
),再根据父栏目ID获取缩略图路径,若父栏目未设置缩略图,则显示默认图片。