第一步:基础检查(最常见原因)
这是最可能出错的地方,请首先确认。

(图片来源网络,侵删)
-
列表模板文件是否正确?
- 进入后台
模板->默认模板管理。 - 找到您当前使用的栏目(图集栏目”)。
- 检查其“列表模板”是否指向了正确的模板文件,
list_image.htm。 - 关键点:这个模板文件必须存在,并且文件名不能写错,很多新手会直接使用默认的
list_article.htm,这是文章列表的模板,里面没有调用图集的标签,所以肯定不会显示。
- 进入后台
-
列表模板中是否包含正确的图集调用标签?
- 打开第一步中确认的列表模板文件(
list_image.htm)。 - 查看文件内容,它是否包含了
{dede:arclist}或{dede:list}标签,并且这些标签里是否有innertext或body来调用图集内容。 - 最核心的标签:要显示图集,必须在循环体内使用
{dede:img}标签来获取第一张图片。
一个标准的图集列表模板示例 (
list_image.htm) 应该是这样的:{dede:arclist typeid='栏目ID' row='10' titlelen='40' orderby='pubdate'} <li> <a href="[field:arcurl/]"> <!-- 这是调用图集第一张图片的核心标签 --> <img src="[field:imgsrc/]" alt="[field:title/]" width="200" height="150" /> </a> <a href="[field:arcurl/]">[field:title/]</a> </li> {/dede:arclist}[field:imgsrc/]:这个标签的作用就是获取该图集文章的第一张图片地址,这是列表页显示图集的关键。
- 打开第一步中确认的列表模板文件(
第二步:内容检查与发布
如果模板没问题,那么问题可能出在内容本身。

(图片来源网络,侵删)
-
图集文章是否正确发布?
- 进入后台 ->
添加图集内容。 - 确保您发布的文章类型是“图集”,如果误选了“文章”,它就不会有图集功能。
- 在编辑器中,您是否成功上传了图片?检查图集编辑器里的图片列表,是否有图片上传成功。
- 进入后台 ->
-
缩略图是否上传?
- DedeCMS 的列表页通常需要一个统一的缩略图来显示,即使您使用了
{field:imgsrc/}调用图集第一张图,系统有时也需要一个“缩略图”字段。 - 在发布图集时,编辑器下方会有“缩略图”选项,您需要手动上传一张缩略图,或者勾选“提取图集第一张为缩略图”。
- 如果缩略图为空,列表页可能只显示标题而不显示图片。
- DedeCMS 的列表页通常需要一个统一的缩略图来显示,即使您使用了
第三步:系统与数据库检查(高级排查)
如果以上都正确,那可能是更深层次的问题。
-
系统是否缓存?
(图片来源网络,侵删)- 后台有缓存机制,有时候修改了模板或内容,页面没有立即更新。
- 解决方法:登录后台,进入
系统->一键更新网站->更新HTML->更新栏目HTML和更新文档HTML,或者直接清空缓存目录/data/cache/下的所有文件(操作前请备份)。
-
数据库表是否损坏或字段缺失?
- 这是最棘手的情况,如果您的网站曾经被攻击、误操作或服务器异常,可能会导致
dede_archives(文章表)或dede_addon17(图集附加表,数字可能不同)等出现问题。 - 排查方法:
- 检查
dede_archives表中,您的图集文章的litpic(缩略图)字段和channeltype(频道类型,图集为2)字段是否正确。 - 检查附加表(通常是
dede_addon17或类似名称)中,该图集文章对应的imgurls字段内容是否完整,这个字段应该是一个包含所有图片路径的文本,通常以{dede:img}标签的形式存储。
- 检查
- 解决方法:如果确定是数据库问题,可以从备份中恢复,或者手动修复数据。强烈建议操作前备份数据库!
- 这是最棘手的情况,如果您的网站曾经被攻击、误操作或服务器异常,可能会导致
-
自定义模型或字段问题?
- 如果您的图集栏目使用了自定义模型,请检查模型中的图片字段是否正确设置,并且列表模板中是否调用了正确的字段名(
[field:myimgfield/]而不是[field:imgsrc/])。
- 如果您的图集栏目使用了自定义模型,请检查模型中的图片字段是否正确设置,并且列表模板中是否调用了正确的字段名(
第四步:代码与标签修复
默认的标签可能因为版本问题或修改而失效。
-
修改
include/arc.archives.class.php文件(非常经典的修复方法) 这个文件负责处理文章列表的数据,其中有一个函数专门用于获取图集第一张图片,如果这个函数出错,[field:imgsrc/]就会无法获取数据。-
操作步骤:
-
用FTP或文件管理器进入网站根目录,找到
include/arc.archives.class.php文件并下载备份。 -
用代码编辑器(如 Notepad++、VS Code)打开该文件。
-
按快捷键
Ctrl + F搜索GetImageUrls函数。 -
找到类似这样的代码块(版本不同,代码行数可能略有差异):
// ... 其他代码 ... function GetImageUrls($aid) { // ... 其他代码 ... // 下面这两行是关键 if($row['ismake'] == -1) { $this->Fields['imgsrc'] = $this->GetTrueUrl($row['litpic']); } else { $this->Fields['imgsrc'] = $this->GetTrueUrl($row['litpic']); } // ... 其他代码 ... } -
修复:将上述代码块修改为更健壮的版本,确保无论
ismake为何值,都能正确获取图片,修改如下:// ... 其他代码 ... function GetImageUrls($aid) { // ... 其他代码 ... // 修复后的代码 $row = $this->dsql->GetOne("SELECT * FROM `#@__archives` WHERE id='$aid' "); if(is_array($row)) { // 优先使用附加表里的第一张图 $addtable = $this->dsql->GetOne("SELECT addtable FROM `#@__channeltype` WHERE id='{$row['channeltype']}'"); if(is_array($addtable) && $addtable['addtable'] != '') { $addRow = $this->dsql->GetOne("SELECT imgurls FROM `{$addtable['addtable']}` WHERE aid='$aid'"); if(is_array($addRow) && $addRow['imgurls']!='') { $imgurls = stripslashes($addRow['imgurls']); preg_match_all("/{dede:img.*?}(.*?){\/dede:img}/is", $imgurls, $imgurls_arr); if(isset($imgurls_arr[1][0])) { $this->Fields['imgsrc'] = $this->GetTrueUrl(trim($imgurls_arr[1][0])); return; } } } // 如果附加表没有,则使用文章表的litpic $this->Fields['imgsrc'] = $this->GetTrueUrl($row['litpic']); } } // ... 其他代码 ... -
保存上传覆盖,然后去后台更新一下缓存。
-
-
总结与排查顺序建议
遇到“DedeCMS图集列表不显示”的问题,请按以下顺序排查,90%的问题都能在前三步解决:
- 【首要检查】:确认列表模板是
list_image.htm,并且里面使用了{dede:arclist}和[field:imgsrc/]- 检查】:确认发布的图集文章类型正确,并且成功上传了图片和缩略图。
- 【系统更新】:去后台“一键更新网站”,强制刷新页面缓存。
- 【代码修复】:如果以上都无效,尝试修改
include/arc.archives.class.php文件中的GetImageUrls函数。- 【最后手段】:检查数据库是否损坏,或恢复备份。
希望这个详细的指南能帮助您解决问题!
