dede文章定时发布如何设置?

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

如何设置定时发布(标准方法)

这个功能的核心在于文章编辑页面的发布时间设置

操作步骤:

  1. 登录后台:使用你的管理员账号登录 DedeCMS 后台。

  2. 进入文章编辑

    • 方法一:通过【内容】->【所有档案列表】,找到你想要修改的文章,点击【编辑】。
    • 方法二:通过【内容】->【添加文档】,新建一篇文章。
  3. 设置发布时间

    • 在文章编辑页面,找到 “发布时间” 这个字段。
    • 它通常是一个日期时间选择器,默认显示当前时间。
    • 点击这个输入框,在弹出的日历和时间选择器中,选择你希望文章正式发布的未来时间
    • 关键点:确保你选择的时间是晚于当前时间的。
  4. 保存文章

    • 填写完文章标题、内容、栏目等信息后。
    • 点击【保存】按钮。
  5. 检查状态

    • 保存成功后,回到【所有档案列表】页面,你会发现这篇文章的 “状态” 显示为“仅作者可见”或“未审核”(具体取决于你的网站后台设置),而不是“已发布”。
    • 这就说明定时发布任务已经成功设置。

原理:DedeCMS 的定时发布是通过一个名为 task_do.php 的脚本,在后台通过一个计划任务(Cron Job)来执行的,系统会定期(通常是几分钟)检查一次数据库,将那些“发布时间”小于等于当前时间,但状态又不是“已发布”的文章,自动更新状态为“已发布”。


重要前提:开启计划任务

如果你的文章到了发布时间却没有自动发布,最常见的原因就是没有开启 DedeCMS 的计划任务

如何开启计划任务:

  1. 登录后台 -> 【系统】-> 系统基本参数
  2. 在左侧菜单中找到并点击 “计划任务”
  3. 你会看到几个重要的设置项:
    • 开启计划任务:选择 “是”
    • 任务执行间隔(秒):设置一个合理的间隔,300(即5分钟),系统会每隔这个时间执行一次任务。
    • 计划任务插件开关:确保这个选项是开启的。
  4. 保存设置
  5. 手动触发一次:为了确保配置生效,你可以手动访问一下这个地址(请将你的域名替换掉): http://你的域名/dede/task_do.php 访问后,系统会立即执行一次计划任务,检查并发布到期的文章。

常见问题与解决方案

问题1:设置了定时发布,但时间到了文章没有自动发布。

原因及解决方案:

  1. 计划任务未开启:这是最常见的原因,请按照上面的“重要前提”部分,检查并开启计划任务。
  2. 服务器未配置Cron Job:DedeCMS 的计划任务依赖于服务器端的 Cron Job,虽然 task_do.php 可以手动触发,但自动化需要服务器定时访问这个脚本。
    • 解决方案:联系你的服务器管理员,为你设置一个 Cron Job。
    • Cron Job 命令示例(请根据你的实际路径修改):
      */5 * * * * /usr/bin/wget -O - -q http://你的域名/dede/task_do.php

      这个命令的意思是“每5分钟执行一次,访问 task_do.php 这个URL”。

  3. 服务器时间不正确:检查你的服务器时间和北京时间是否一致,如果服务器时间比北京时间慢,那么文章发布就会延迟。
  4. 文章状态异常:检查文章在数据库中的状态,登录数据库,找到 dede_archives 表,查看你的文章记录,arcrank 字段如果不是 -1(仅作者可见)或 0(未审核),或者 senddate(发布时间)字段不正确,则可能是数据问题。
  5. 权限问题:确保运行网站的用户(如 www-data)有权限执行 task_do.php 脚本。

问题2:我想让定时发布的内容在发布前就处于“待审核”状态,方便我检查。

默认行为:DedeCMS 在定时发布期间,文章的默认状态是“仅作者可见”(arcrank = -1),前台用户是看不到的。

如何改为“待审核”状态?

这个需要修改代码,因为 DedeCMS 没有提供直接的选项。

  1. 找到核心文件:打开 /dede/archives_edit.php 文件(用于编辑已有文章)。
  2. 查找代码:在文件中搜索 //更新文档 或类似的代码块。
  3. 修改 SQL 语句:找到执行 UPDATE dede_archives 的地方,你会看到类似这样的代码:
    $query = "UPDATE dede_archives SET
              ismake='$ismake',
              arcrank='$arcrank',
              ...
              WHERE id='$aid'";

    你需要确保 $arcrank 变量的逻辑是:senddate(发布时间)大于当前时间,arcrank 应该被设置为 1(待审核),而不是 -1(仅作者可见)。

  4. 添加判断逻辑:在 archives_edit.php 中,在更新数据库之前,可以加入如下逻辑:
    // 获取当前时间和文章发布时间
    $nowtime = time();
    if ($senddate > $nowtime) {
        // 如果发布时间晚于当前时间,则设置为待审核状态
        $arcrank = 1;
    }

    注意:这是一个代码层面的修改,需要一定的 PHP 和 SQL 知识,操作前请务必备份原文件!


总结与最佳实践

功能点 说明
核心操作 在文章编辑页面的“发布时间”字段设置一个未来的时间,然后保存。
必要条件 必须在【系统基本参数】->【计划任务】中开启计划任务,并设置合理的执行间隔。
验证方法 设置好后,检查文章列表的状态是否为“仅作者可见”,时间到了,检查文章是否变为“已发布”。
手动触发 可以手动访问 http://你的域名/dede/task_do.php 来立即执行一次发布任务。
高级需求 如果希望定时文章在发布前为“待审核”状态,需要修改 archives_edit.php 等核心文件,不推荐新手操作。

希望这份详细的指南能帮助你成功使用 DedeCMS 的定时发布功能!

-- 展开阅读全文 --
头像
dede文章列表空白
« 上一篇 今天
如何修改DedeCMS的提示信息?
下一篇 » 今天

相关文章

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

目录[+]