核心原因分析
最根本的原因是:数据库里的栏目信息,与服务器上实际存放栏目封面、列表等内容的物理路径不匹配。

(图片来源网络,侵删)
当你使用“安装”或“还原”功能时,你通常是导入了一个在其他服务器上导出的数据库,那个数据库里的路径是旧服务器的路径(/home/wwwroot/abc.com/),而你的新服务器路径是 /var/www/html/ 或 D:/wwwroot/xyz.com/,DedeCMS 找不到路径,所以就不显示栏目了。
第一步:检查并修正核心网站参数(90%的解决方案)
这是最重要的一步,请务必仔细操作。
-
登录DedeCMS后台
用你的管理员账号登录网站的后台管理界面。
(图片来源网络,侵删) -
进入“系统” -> “系统基本参数”
在后台左侧菜单栏找到“系统”选项,点击它,然后在下拉菜单中选择“系统基本参数”。
-
检查“站点设置”
- 在“站点信息”这一栏,重点检查以下两项:
- 网站根目录 (
cfg_cmspath)- 当前值: 检查这里的路径是否是你当前服务器上DedeCMS程序的实际存放路径,如果你的网站在
D:\wwwroot\mydede,那么这里就应该填D:\wwwroot\mydede。 - 修正: 如果路径不正确,请修改为正确的绝对路径。注意: Windows系统用反斜杠
\,Linux系统用正斜杠 。
- 当前值: 检查这里的路径是否是你当前服务器上DedeCMS程序的实际存放路径,如果你的网站在
- 网站首页 (
cfg_indexurl)- 当前值: 检查这里的网址是否是你当前网站的域名。
http://www.yourdomain.com/或https://www.yourdomain.com/。 - 修正: 如果域名或协议(http/https)不正确,请修改过来。
- 当前值: 检查这里的网址是否是你当前网站的域名。
- 网站根目录 (
- 在“站点信息”这一栏,重点检查以下两项:
-
检查“核心设置”
- 向下滚动页面,找到“核心设置”部分。
- 附件目录 (
cfg_attachmentdir)- 当前值: 检查上传的图片、附件等存放的路径,这个路径可以是绝对路径,也可以是相对于网站根目录的路径(如
/uploads),确保这个目录存在并且有写入权限。
- 当前值: 检查上传的图片、附件等存放的路径,这个路径可以是绝对路径,也可以是相对于网站根目录的路径(如
- 模板默认风格 (
cfg_df_style)- 当前值: 确保这里填写的模板文件夹存在于
/templets/目录下,如果这里填default,/templets/default/目录必须存在。
- 当前值: 确保这里填写的模板文件夹存在于
-
保存并刷新
- 修改完所有必要的参数后,点击页面底部的“保存”按钮。
- 保存成功后,清空浏览器缓存,然后刷新你的网站前台页面,看看栏目是否正常显示了。
第二步:如果第一步无效,检查栏目本身
如果修正了基本参数后栏目仍然不显示,问题可能出在栏目的具体设置上。
-
登录后台,进入“栏目管理”
在后台左侧菜单找到“栏目”选项,点击进入“栏目管理”页面。
-
检查栏目列表
- 查看栏目状态: 在栏目列表中,检查每个栏目的“状态”列,如果状态是“未审核”或“禁用”,前台就不会显示,点击“更改”将其设为“正常”。
- 检查栏目类型: 确保栏目的类型是“栏目首页”或“外部链接”,而不是“单页文档”(单页文档通常不显示在主导航栏)。
- 检查上级栏目: 确保没有把栏目错误地放在一个“未审核”或“禁用”的父栏目下。
-
检查单个栏目属性
- 点击任意一个不显示的栏目名称,进入其编辑页面。
- 栏目名称: 确保名称不为空。
- 栏目文件名: 确保文件名填写正确,并且没有使用特殊字符。
- 切换到“栏目内容”选项卡,确保这里填写了内容(即使是简单的几句话),因为很多模板会调用这里的内容作为栏目简介。
- 栏目列表选项: 切换到“栏目列表选项”卡,确保“列表模板”选择了正确的模板文件(如
list_article.htm),并且该模板文件存在于你的模板目录中。 - 保存: 检查无误后,点击“保存”按钮。
第三步:检查模板文件
如果栏目管理里一切正常,但前台依然不显示,很可能是模板文件出了问题。
-
检查模板文件是否存在
- 进入后台的“模板” -> “模板管理”。
- 找到你当前使用的模板(
default)。 - 检查
list_*.htm(列表模板)和index.htm(首页模板)文件是否存在,如果栏目使用了特定的模板,确保那个模板文件也存在。 - 你也可以直接通过FTP或服务器的文件管理器,去
/templets/你的模板目录/下查看这些文件是否存在。
-
检查模板标签
- 打开首页模板
index.htm,检查调用栏目的标签是否正确。 - 最常用的栏目调用标签是:
{dede:channel type='top' row='8'} <a href='[field:typelink/]'>[field:typename/]</a> {/dede:channel} - 检查这个标签是否被完整地包含在
{dede:...}和{/dede:...}之间,并且没有拼写错误。
- 打开首页模板
-
重新生成HTML
- 数据库更新了,但前台静态文件没有更新。
- 在后台找到“生成”菜单。
- 点击“一键更新网站”,或者分别执行“更新主页HTML”、“更新栏目HTML”、“更新文档HTML”,这个过程会重新生成所有静态页面,确保数据是最新的。
第四步:检查数据库和目录权限
如果以上所有步骤都无效,我们需要考虑更深层次的问题。
-
检查数据库连接
- 打开DedeCMS根目录下的
data/common.inc.php文件。 - 检查里面的数据库信息(
$cfg_dbhost,$cfg_dbname,$cfg_dbuser,$cfg_dbpwd)是否与你的新服务器数据库信息完全一致,一个字符都不能错。
- 打开DedeCMS根目录下的
-
检查目录权限
- 通过FTP或SSH登录你的服务器。
- 确保DedeCMS安装目录下的以下目录具有可写权限(通常是
755或777,777有安全风险,建议先用755):/data/(非常重要,存放配置文件)/uploads/(存放上传文件)/templets/你的模板目录/(存放模板文件,如果开启了模板编译)/special/(专题目录)/html/(存放生成的静态文件)
- 权限不足会导致程序无法写入配置、生成文件,从而引发各种奇怪的问题。
总结与最终建议
| 排查步骤 | 解决方案 | |
|---|---|---|
| 第一步 | 系统基本参数 | 修正 网站根目录 和 网站首页 的路径为当前服务器的信息。 |
| 第二步 | 栏目管理 | 检查栏目状态是否为“正常”,上级栏目是否正常,栏目内容是否填写。 |
| 第三步 | 模板文件 | 检查模板文件是否存在,调用栏目的标签是否正确,并重新生成HTML。 |
| 第四步 | 数据库与权限 | 检查 common.inc.php 中的数据库连接信息,确保关键目录有写入权限。 |
按照这个流程,从上到下逐一排查,你几乎一定能找到问题所在,对于绝大多数“还原后不显示栏目”的问题,第一步修正系统参数 就能解决,祝你成功!
