第一步:检查最基础、最常见的原因
这些原因占了问题总数的90%以上。

(图片来源网络,侵删)
检查栏目设置是否正确(最最常见的原因)
这是首先要排查的地方,登录DedeCMS后台,进入“栏目管理” -> “所有栏目”,找到你列表页没有文章的那个栏目,检查以下几项:
-
栏目类型:
- 必须是“栏目首页” 或 “列表频道”,如果误选了“外部链接”或“单页文档”,那么这个栏目就不会有文章列表。
- 检查方法:点击栏目名称进入编辑页面,在“基本参数”选项卡中,查看“栏目类型”是否正确。
-
:
- 是否选择了“使用栏目”:在“栏目内容”选项卡中,确保“栏目内容”选择了“使用栏目”,如果选择了“不使用栏目”,那么所有文章都将归档到顶级栏目,而不会显示在当前栏目下。
-
上级栏目:
(图片来源网络,侵删)检查这个栏目的“上级栏目”是否设置正确,如果上级栏目本身就没有文章,或者上级栏目设置有误,子栏目自然也显示不出来。
-
栏目列表选项:
- 在“栏目内容”选项卡中,检查“列表选项”。
- 列表命名规则:确认这里的命名规则是否正确,并且你的模板文件是否存在,规则是
list_{tid}.htm,那么就需要在模板目录下有对应的list_1.htm(假设栏目ID是1) 文件。 - 栏目属性:确保没有勾选“仅作为二级栏目(不可发布文章)”,如果勾选了,这个栏目就不能独立发布文章,只能作为父级栏目的子分类。
- 列表命名规则:确认这里的命名规则是否正确,并且你的模板文件是否存在,规则是
- 在“栏目内容”选项卡中,检查“列表选项”。
检查文章是否发布且属于该栏目
有时候文章本身的问题也会导致列表不显示。
- 文章状态:进入“内容管理” -> “所有内容”,找到你发布的那篇文章,检查文章的“状态”是否为“已审核”,如果是“待审核”或“未审核”,前台是看不到的。
- 文章所属栏目:检查文章是否真的属于这个有问题的栏目,有时候可能误选了其他栏目,你可以点击文章标题进入编辑页,在右侧的“常规选项”里查看“栏目归属”。
- 文章发布时间:检查文章的“发布日期”,如果发布日期是一个未来的时间,DedeCMS默认不会在当前时间点显示它,你可以把发布日期修改为当前时间或过去的时间,然后刷新列表页看看。
检查模板文件是否存在且正确
列表页需要有一个专门的模板文件来渲染。
-
模板文件是否存在:
- 登录FTP或主机管理面板,进入你的网站模板目录(通常是
/templets/或/templets/default/)。 - 找到你在栏目设置中指定的“列表命名规则”对应的文件,规则是
list_{tid}.htm,栏目ID是5,那么文件名就是list_5.htm。 - 确认这个文件是真实存在的,有时候可能会因为误操作或FTP上传问题导致文件丢失。
- 登录FTP或主机管理面板,进入你的网站模板目录(通常是
-
是否正确:
- 用代码编辑器(如VS Code, Dreamweaver)打开这个模板文件。
- 检查文件中是否包含了DedeCMS的列表调用标签,最核心的标签是:
{dede:list pagesize='10'} <a href='[field:arcurl/]'>[field:title/]</a> <p>[field:description function='cn_substr(@me,100)'/]...</p> <small>发布时间:[field:pubdate function="MyDate('Y-m-d',@me)"/]</small> {/dede:list} - 确认
{dede:list}和{/dede:list}这对标签是完整存在的,如果标签写错、遗漏或者被注释掉了(<!-- -->),列表就不会生成。
第二步:检查网站运行环境和数据库
如果第一步的基础检查都没问题,那可能是更深层次的原因。
检查数据库中是否有数据
有时候网站后台显示正常,但数据库里可能出错了。
- 登录你的网站数据库(通常使用phpMyAdmin)。
- 找到DedeCMS对应的数据库名。
- 查看三个核心表:
dede_arctype(栏目表),dede_archives(文章主表),dede_addonarticle(文章附加表)。 - 在
dede_arctype表中,找到你问题栏目的记录,确认id和topid等字段是否正常。 - 在
dede_archives表中,检查是否有typeid字段值等于你问题栏目ID的记录,如果没有,说明文章确实没有归到这个栏目,如果有,继续下一步。 - 在
dede_addonarticle表中,同样检查aid字段是否在dede_archives表中存在对应的记录,这是文章详细内容的存放表,如果这里缺少记录,文章列表也可能显示不完整。
检查缓存问题
DedeCMS有强大的缓存机制,有时缓存会导致数据不同步。
- 清除所有缓存:
- 登录DedeCMS后台。
- 进入“系统” -> “系统基本参数” -> “性能选项”。
- 点击“清除所有缓存”按钮。
- 检查一下你的主机空间,是否有
data目录下的缓存文件(如cache目录),如果有,可以手动清空里面的文件(注意:不要删cache目录本身)。
检查服务器环境
- URL重写(伪静态):如果你开启了伪静态,检查伪静态规则(如
.htaccess文件)是否正确配置,错误的规则可能导致列表页URL无法正确解析,从而返回404错误或空白页面,你可以临时关闭伪静态功能,看看列表页是否能正常显示,如果可以,那就是伪静态规则的问题。 - PHP版本和数据库权限:虽然不常见,但如果服务器升级了PHP版本,或者数据库用户权限被修改,也可能导致一些功能异常,可以尝试联系主机商检查一下。
第三步:终极排查方法
如果以上所有方法都试过了还是不行,可以尝试以下“大杀器”。
更换一个默认模板测试
你自定义的模板文件可能存在一些隐藏的错误或兼容性问题。
- 操作方法:回到后台的“栏目管理”,编辑那个有问题的栏目。
- 在“栏目内容”选项卡中,将“列表模板”从你自定义的模板(如
list_5.htm)修改为DedeCMS自带的默认模板(如default/list_article.htm)。 - 更新后,刷新列表页看看是否正常,如果正常了,说明问题就出在你原来的那个自定义模板文件里,你需要仔细检查或重新制作那个模板。
恢复原始文件
如果你之前修改过核心文件,可能会导致未知错误。
- 操作方法:从DedeCMS的官方下载包里,找到
/include/目录下的arc.listview.class.php文件。 - 用官方下载包里的这个全新、未修改的文件,覆盖到你网站服务器上对应的文件。
- 这个文件是处理列表页生成的核心类文件,恢复它有时能解决一些莫奇妙的bug。
总结与排查清单
为了方便你快速定位,这里有一个简单的排查清单:
| 检查项 | 解决方案 | |
|---|---|---|
| 栏目设置 | 栏目类型是否为“栏目首页”或“列表频道”? | 在后台“栏目管理”中修改。 |
| 是否勾选了“仅作为二级栏目”? | 取消勾选。 | |
| ”是否选择了“使用栏目”? | 修改为“使用栏目”。 | |
| 文章本身 | 文章状态是否为“已审核”? | 前台审核或通过“审核”按钮。 |
| 文章是否真的属于该栏目? | 检查文章编辑页的“栏目归属”。 | |
| 文章发布日期是否是未来时间? | 修改为当前或过去时间。 | |
| 模板文件 | 列表模板文件(如 list_x.htm)是否存在? |
上传缺失的模板文件。 |
模板文件中 {dede/list} 标签是否完整? |
检查并修正标签。 | |
| 系统与数据 | 是否有大量缓存? | 后台“清除所有缓存”。 |
| 数据库中文章数据是否正常? | 用phpMyAdmin检查相关数据表。 | |
| 环境 | 是否开启了伪静态? | 临时关闭伪静态测试。 |
| 终极方法 | 更换为默认模板测试? | 在栏目设置中切换到默认模板。 |
核心文件 arc.listview.class.php 是否损坏? |
用官方文件覆盖。 |
希望这份详细的指南能帮助你解决问题!通常情况下,问题都会在前三步中找到答案,祝你顺利!
