核心原因:模板文件被编译成了 PHP 文件

DedeCMS 为了提高运行效率,它的工作流程是这样的:

dede 修改模板文件 前台不更新
(图片来源网络,侵删)
  1. 读取模板:当用户访问一个页面时(文章列表页 list_article.htm),DedeCMS 不会直接读取 list_article.htm 这个 HTML 模板文件。
  2. 检查编译文件:它会先去 ./templets/ 目录下寻找一个对应的编译文件,list_article.php
  3. 对比更新:DedeCMS 会对比 list_article.htm 模板文件和 list_article.php 编译文件的修改时间。
    • 如果模板文件比编译文件新:说明模板被修改过了,DedeCMS 会重新读取 list_article.htm 的内容,将其中的模板标签(如 {dede:arclist})转换成 PHP 代码,然后生成新的 list_article.php 文件,最后再执行这个 PHP 文件来显示页面。
    • 如果编译文件比模板文件新或一样:说明模板没有改动,DedeCMS 就会直接执行已有的 list_article.php 文件,从而跳过了读取和解析模板的步骤,速度更快。

问题就出在这里:您修改了 list_article.htmlist_article.php 这个编译文件的修改时间比模板文件还要新,DedeCMS 认为“模板没有更新”,就直接使用了旧的编译文件,导致前台页面看不到任何变化。


解决方案(按推荐顺序)

最简单直接的方法 - 清空所有编译文件(成功率 99%)

这是解决此类问题最快、最有效的方法,清空所有编译文件后,DedeCMS 在下次访问页面时,会自动重新编译所有模板。

操作步骤:

  1. 通过 FTP 或您的虚拟主机控制面板,进入您的网站根目录。
  2. 找到并进入 templets 目录(/templets/)。
  3. 在这个目录下,您会看到一个名为 cache 的文件夹。直接删除这个 cache 文件夹
  4. 删除后,刷新您的网站前台页面,DedeCMS 会自动重新生成 cache 文件夹,并编译您访问过的页面。

优点:一劳永逸,能解决所有因模板编译导致的问题。 缺点:网站首次访问时会稍微慢一点,因为需要重新编译。

dede 修改模板文件 前台不更新
(图片来源网络,侵删)

使用 DedeCMS 后台自带的“更新”功能(针对特定页面)

如果您只想更新某一个页面,而不是整个网站,可以使用后台的更新功能。

操作步骤:

  1. 登录您的 DedeCMS 后台。
  2. 更新首页
    • 点击顶部菜单的 “主页” -> “主页管理” -> “更新主页HTML”
    • 在弹出的页面中,直接点击 “更新主页HTML” 按钮即可。
  3. 更新栏目/文章列表页
    • 点击顶部菜单的 “频道” -> “栏目管理”
    • 找到您想更新的栏目,点击后面的 [更新栏目][更新栏目] 下的子菜单(如“更新列表”)。
  4. 更新文章内容页
    • 进入 -> “所有档案”
    • 找到您想更新的文章,勾选它,然后点击顶部的 [更新] 按钮,选择“更新选中页面的HTML”。

优点:精确更新,不会影响其他页面。 缺点:操作步骤相对繁琐,如果修改的页面多会很麻烦。


修改文件权限(服务器环境问题)

在某些服务器环境下(如 Nginx + PHP-FPM,或者权限设置严格的虚拟主机),Web 服务器进程(如 www-datanobody)可能没有权限写入 templets/cache 目录,导致无法生成新的编译文件。

dede 修改模板文件 前台不更新
(图片来源网络,侵删)

操作步骤:

  1. 通过 SSH 或 FTP 连接到服务器。
  2. 进入网站的 templets 目录。
  3. cache 目录及其内部所有文件的权限设置为 755777(777 是最高权限,仅作为测试用,不推荐长期使用)。
    • 命令行操作:
      chmod -R 755 ./templets/cache/
    • FTP 客户端操作: 右键点击 cache 文件夹,选择“文件权限”,然后勾读、写、执行权限给所有者、组和其他人。

优点:能从根本上解决权限导致的编译失败问题。 缺点:如果权限设置不当,会带来安全风险。


手动删除并重新生成编译文件(针对单个页面)

如果您只修改了某一个页面,可以只处理这一个页面的编译文件。

操作步骤:

  1. 通过 FTP 进入 templets/cache 目录。
  2. 找到与您修改的模板文件同名的 .php 文件,您修改了 article_article.htm页模板),那么就找到 article_article.php 文件。
  3. 删除这个 .php 文件
  4. 去前台访问对应的页面,DedeCMS 会自动重新生成这个编译文件。

优点:非常精确,影响范围最小。 缺点:需要知道哪个模板文件对应哪个编译文件。


总结与排查清单

当您遇到“前台不更新”的问题时,请按以下顺序排查:

  1. 首选方案:直接删除 templets/cache 整个文件夹,然后刷新前台页面,这能解决 99% 的问题。
  2. 如果不行:检查服务器文件权限,确保 templets/cache 目录可写。
  3. 如果还不行:确认您修改的是正确的模板文件,并且已经保存,有时候可能是编辑器没有保存成功。
  4. 最后检查:确保您修改的是前台模板文件(位于 templets/ 目录下),而不是后台模板文件(位于 dede/templets/ 目录下)。
  5. 特殊情况:如果您的网站开启了 “仅动态浏览” 模式,那么前台页面本身就不会生成静态 HTML 文件,所有页面都是动态调用的,这种情况下,修改模板后刷新页面即可生效,不存在静态文件不更新的问题。

希望这些方法能帮助您解决问题!