核心思路
列表页的文章缩略图,其显示流程是:

(图片来源网络,侵删)
- 后台发布文章时:上传或选择一张图片,并设置为“缩略图”。
- 数据写入数据库:这张图片的路径被保存在
dede_archives表的litpic字段中。 - 模板调用:列表模板(
list_*.htm)通过特定标签(如[field:litpic/])获取这个路径。 - 前端解析:浏览器根据获取到的路径,请求并显示这张图片。
问题可能出现在以上任何一个环节。
排查与解决步骤
第一步:检查文章本身是否有缩略图(最常见)
这是最容易忽略但也是最常见的原因。
- 进入后台 -> -> 所有档案。
- 找到一篇在列表页显示不出图片的文章,点击“编辑”。
- 在文章编辑页面的右侧,找到“缩略图”设置区域。
- 情况A:缩略图框是空的。
- 原因:发布文章时,根本没有上传或选择缩略图。
- 解决:点击“上传新图片”或“选择已上传的图片”,重新设置一张缩略图,然后更新文章,这是最直接的解决方法。
- 情况B:缩略图框里有图片,但图片路径不正确或已失效。
- 原因:图片被删除了,或者网站迁移后路径错误。
- 解决:重新上传或选择一张有效的缩略图,然后更新文章。
- 情况A:缩略图框是空的。
验证方法:检查 dede_archives 表中对应文章的 litpic 字段值是否为空或是一个错误的路径,可以通过phpMyAdmin等数据库管理工具直接查看。
第二步:检查模板标签是否正确
模板中的调用标签必须正确无误。

(图片来源网络,侵删)
- 找到列表模板文件:在网站根目录的
templets/default/目录下(或你自定义的模板目录),找到对应的列表模板,list_article.htm。 - 检查图片标签:
- 正确的调用方式:
<img src="[field:litpic/]" alt="[field:title function='html2text(@me)'/]" width="100" height="100" /> - 常见错误:
- 标签拼写错误:比如写成了
[field:litmage/]或[field:lit_pic/]。 - 使用了错误的字段:比如使用了
[field:picname/](这个字段通常用于图集,而不是单张缩略图)。 - 缺少必要的HTML结构:只有
[field:litpic/]而没有<img src="...">标签,浏览器自然无法显示。
- 标签拼写错误:比如写成了
- 正确的调用方式:
解决:确保模板中的 <img> 标签正确使用了 [field:litpic/] 作为 src 属性。
第三步:检查图片路径与网站访问是否匹配(网站迁移常见问题)
这是第二个高发区,尤其是在将网站从本地服务器迁移到虚拟主机或服务器上时。
-
查看图片源地址:
- 在列表页,右键点击那个显示不出来的图片框,选择“检查”或“审查元素”。
- 在开发者工具中,你会看到
<img>标签的src属性值,http://localhost/uploads/allimg/240101/1-2401011GZ1234.jpg。
-
判断问题:
(图片来源网络,侵删)- 如果路径是本地路径(如
D:/wwwroot/uploads/...或/var/www/html/uploads/...),这明显是错误的,浏览器无法通过服务器本地路径访问图片。 - 如果路径是旧域名(如
http://olddomain.com/uploads/...),但你的网站现在新域名是http://newdomain.com,这也是路径不匹配。
- 如果路径是本地路径(如
-
解决方案:
-
临时修复(治标):进入后台 -> 系统 -> 系统基本参数 -> 核心设置,找到“(是/否)支持多站点”,选择“是”,然后重新生成所有HTML(如果开启了静态化)或刷新页面,这有时能让系统自动修正路径。
-
根本修复(治本):
-
进入后台 -> 系统 -> 数据库备份/恢复 -> 数据表备份,备份
dede_archives表。 -
进入 系统 -> SQL命令行工具。
-
在命令框中执行以下SQL语句,将所有旧的错误路径替换为新的正确路径。请务必将
旧路径和新路径替换为你自己的实际路径。-- 示例1:将本地路径 D:/wwwroot/uploads/ 替换为 http://www.yourdomain.com/uploads/ UPDATE dede_archives SET litpic = REPLACE(litpic, 'D:/wwwroot/uploads/', 'http://www.yourdomain.com/uploads/'); -- 示例2:将旧域名 http://olddomain.com/ 替换为新域名 http://newdomain.com/ UPDATE dede_archives SET litpic = REPLACE(litpic, 'http://olddomain.com/', 'http://newdomain.com/');
-
执行完毕后,更新或重新生成一下列表页。
-
-
第四步:检查目录权限
Web服务器(如Apache/Nginx)需要有权限读取 uploads 目录下的图片。
- 检查目录:确认你的图片是否上传到了
uploads目录(默认路径)。 - 检查权限:
- Linux服务器:使用SSH登录,执行
chmod -R 755 /path/to/your/uploads命令,确保目录有读、执行权限,文件有读权限。 - 通过FTP工具:右键点击
uploads文件夹,查看文件权限,通常需要设置为755或750,文件权限通常为644。 - 虚拟主机控制面板:通常有文件管理器,可以直接修改权限。
- Linux服务器:使用SSH登录,执行
第五步:检查服务器安全软件或规则
服务器的安全软件(如安全狗、云锁)或服务器的Rewrite规则可能会错误地阻止了对图片路径的访问。
- 临时测试:尝试将网站目录下的
safe文件夹重命名为safe_bak,然后刷新页面看是否恢复,这可以临时禁用DedeCMS自带的“安全狗”功能。 - 检查防火墙/安全软件:登录服务器或虚拟主机后台,查看安全软件的拦截日志,看是否有对
/uploads/目录的访问被记录并拦截。 - 检查Rewrite规则:如果你使用了URL重写(伪静态),检查
.htaccess(Apache) 或nginx.conf(Nginx) 中的规则,确保没有错误地过滤掉图片的请求路径,确保规则中没有类似RewriteRule ^uploads/(.*)$ - [F]这样的代码。
第六步:检查PHP环境或GD库
如果图片上传上去,但显示为破损图标或空白,可能是服务器环境问题。
- GD库:DedeCMS处理图片需要PHP的GD库支持,可以通过在网站根目录创建一个
info.php文件,内容为<?php phpinfo(); ?>,然后在浏览器中访问它,查看GD Support是否为enabled,如果为disabled,需要联系服务器商开启或重新编译PHP。 - 图片处理函数:某些DedeCMS功能或插件可能会调用
imagecreatefromjpeg()等函数,如果服务器不支持某种图片格式(如WebP),也可能导致问题。
总结与排查清单
遇到列表图片不显示,请按以下清单操作:
- [ ] 后台检查:去文章编辑页确认是否真的设置了有效缩略图。
- [ ] 模板检查:去
list_*.htm模板文件里,确认<img src="[field:litpic/]" ...>标签是否正确无误。 - [ ] 路径检查:浏览器右键“检查图片”,看
src路径是否是正确的公网URL,而不是本地路径或旧域名,如果是,用SQL批量替换。 - [ ] 权限检查:确认
uploads目录和图片文件的权限是否正确(Linux下755/644)。 - [ ] 安全软件检查:尝试重命名
safe文件夹,或检查安全软件日志。 - [ ] 环境检查:检查PHP的GD库是否开启。
按照这个流程,90%以上的问题都可以被解决,如果以上步骤都无法解决问题,请提供你的具体错误现象(如图片源地址是什么、后台设置截图等),以便进一步定位问题。
