dede重编文章后日期为何不更新?

99ANYc3cd6
预计阅读时长 12 分钟
位置: 首页 DEDE建站 正文

问题根源分析

DedeCMS的文章时间主要有两个字段:

dede重新编辑文章后不更新日期
(图片来源网络,侵删)
  1. pubdate (发布时间):文章首次发布的时间,通常情况下,这个时间不应该被随意修改。
  2. uptime (更新时间):文章最后一次被修改的时间,这个字段才应该在编辑文章时被更新。

在旧版本的DedeCMS中,编辑文章后不更新时间是一个普遍存在的“特性”或“Bug”,新版本有所改善,但如果你修改了核心文件或使用了不兼容的模板,问题依然可能出现。


解决方案(按推荐顺序)

检查并修改 article_edit.php 文件(最核心、最根本的解决方法)

这是最常见的原因,因为编辑文章的核心逻辑就在这个文件里,它可能在保存时没有执行更新时间的SQL语句。

  1. 找到文件: 登录你的FTP或主机控制面板,找到 dede 目录(你的后台目录),然后进入 article_edit.php 文件。

  2. 定位代码: 用代码编辑器(如Notepad++, VS Code等)打开这个文件,按 Ctrl+F 搜索关键词 uptime

    dede重新编辑文章后不更新日期
    (图片来源网络,侵删)
  3. 分析并修改: 你可能会找到类似下面这样的代码块(具体行号可能因版本而异):

    // ... 其他代码 ...
    if(empty($typeid))
    {
        ShowMsg('请选择栏目!', '-1');
        exit();
    }
    // 保存到主表
    $query = "UPDATE `#@__archives` SET
              typeid='$typeid',
              title='$title',
              shorttitle='$shorttitle',
              writer='$writer',
              source='$source',
              litpic='$litpic',
              keywords='$keywords',
              description='$description'
              WHERE id='$aid'";
    $dsql->ExecuteNoneQuery($query);
    // ... 其他代码 ...

    问题所在:你会发现,在更新 #@__archives 表的SQL语句中,没有包含 `uptime = '".GetMkTime(time())."' " 这一句。

  4. 应用修复: 在上面的 SET 语句中,手动添加 uptime 字段的更新,修改后的代码应该像这样:

    // 保存到主表
    $query = "UPDATE `#@__archives` SET
              typeid='$typeid',
              title='$title',
              shorttitle='$shorttitle',
              writer='$writer',
              source='$source',
              litpic='$litpic',
              keywords='$keywords',
              description='$description',
              uptime='".GetMkTime(time())."'  // <-- 在这里添加 updateTime
              WHERE id='$aid'";
    $dsql->ExecuteNoneQuery($query);

    说明

    dede重新编辑文章后不更新日期
    (图片来源网络,侵删)
    • GetMkTime(time()) 是DedeCMS获取当前时间戳并将其转换为数据库所需格式的函数。
    • 把这行代码添加到 SET 语句的最后一项,后面用逗号隔开(除了最后一项)。
  5. 保存并测试: 保存 article_edit.php 文件,然后回到后台重新编辑一篇文章,点击“保存”,再次查看文章,你会发现“更新时间”已经变成当前时间了。


检查并修改 templets/article_edit.htm 模板文件

问题可能出在前端模板上,虽然不常见,但模板文件中可能隐藏了一些JavaScript逻辑,或者表单字段有问题。

  1. 找到文件: 在 dede 目录下,找到 templets 文件夹,然后进入 article_edit.htm 文件。

  2. 检查表单: 检查表单是否正确提交了所有必要的数据,通常情况下,编辑页面是不需要手动提供更新时间的,这个值应该由后台PHP代码自动生成,所以模板文件本身问题不大,但可以检查一下是否有误删或修改了隐藏的表单字段。

  3. 检查JavaScript: 搜索文件中是否有 uptime 相关的JavaScript代码,如果有的话,看看它是否被错误地注释掉了或逻辑有误,但通常编辑页面的时间都是由PHP后端控制的,前端JS只是用来显示。

    如果你对PHP不熟悉,这个方案可以暂时跳过,优先使用方案一


检查是否有缓存问题

DedeCMS有强大的缓存机制,有时候修改了文件但看不到效果,可能是缓存导致的。

  1. 清除后台缓存: 登录DedeCMS后台,进入【系统】->【系统设置】->【清除缓存】,点击“一键更新全部缓存”或“更新系统缓存”。
  2. 清除浏览器缓存: 按 Ctrl + F5 强制刷新浏览器页面,或者清除浏览器缓存后重新登录后台操作。
  3. 清除模板缓存: 确保你的文章列表页、内容页等模板没有被缓存,可以在后台【生成】->【更新HTML】中,选择“更新栏目HTML”或“更新文档HTML”来触发模板重新编译。

检查数据库字段和权限

这是最极端的情况,但也可以排查一下。

  1. 检查数据库表结构: 登录你的数据库管理工具(如phpMyAdmin),检查 dede_archives(或你前缀的#___archives)表中是否存在 uptime 字段,以及其数据类型是否正确(通常是 int(10)int(11) unsigned)。
  2. 检查数据库用户权限: 确保连接数据库的用户有 UPDATE 权限,虽然99.9%的情况下权限都是正常的,但如果你在配置文件中修改了数据库用户,这是一个可以确认的点。

总结与推荐流程

遇到“dede重新编辑文章后不更新日期”的问题,请按照以下步骤操作:

  1. 首选方案:直接修改 /dede/article_edit.php 文件,在更新 archives 表的SQL语句中添加 uptime 字段的更新,这是最直接、最有效的解决方法。
  2. 如果方案一无效:尝试清除所有缓存(后台缓存、浏览器缓存、模板缓存)。
  3. 如果仍然无效:检查数据库表结构,确认 uptime 字段存在且正常。
  4. 最后考虑:检查 /dede/templets/article_edit.htm 模板文件,看是否有异常。

希望这个详细的指南能帮助你解决问题!

-- 展开阅读全文 --
头像
C语言如何创建二叉树?createbitree函数怎么实现?
« 上一篇 2025-12-20
dede文章内容图片大小如何控制?
下一篇 » 2025-12-20

相关文章

取消
微信二维码
支付宝二维码

目录[+]