如何设置定时发布(标准方法)
这个功能的核心在于文章编辑页面的发布时间设置。
操作步骤:
-
登录后台:使用你的管理员账号登录 DedeCMS 后台。
-
进入文章编辑:
- 方法一:通过【内容】->【所有档案列表】,找到你想要修改的文章,点击【编辑】。
- 方法二:通过【内容】->【添加文档】,新建一篇文章。
-
设置发布时间:
- 在文章编辑页面,找到 “发布时间” 这个字段。
- 它通常是一个日期时间选择器,默认显示当前时间。
- 点击这个输入框,在弹出的日历和时间选择器中,选择你希望文章正式发布的未来时间。
- 关键点:确保你选择的时间是晚于当前时间的。
-
保存文章:
- 填写完文章标题、内容、栏目等信息后。
- 点击【保存】按钮。
-
检查状态:
- 保存成功后,回到【所有档案列表】页面,你会发现这篇文章的 “状态” 显示为“仅作者可见”或“未审核”(具体取决于你的网站后台设置),而不是“已发布”。
- 这就说明定时发布任务已经成功设置。
原理:DedeCMS 的定时发布是通过一个名为 task_do.php 的脚本,在后台通过一个计划任务(Cron Job)来执行的,系统会定期(通常是几分钟)检查一次数据库,将那些“发布时间”小于等于当前时间,但状态又不是“已发布”的文章,自动更新状态为“已发布”。
重要前提:开启计划任务
如果你的文章到了发布时间却没有自动发布,最常见的原因就是没有开启 DedeCMS 的计划任务。
如何开启计划任务:
- 登录后台 -> 【系统】-> 系统基本参数。
- 在左侧菜单中找到并点击 “计划任务”。
- 你会看到几个重要的设置项:
- 开启计划任务:选择 “是”。
- 任务执行间隔(秒):设置一个合理的间隔,
300(即5分钟),系统会每隔这个时间执行一次任务。 - 计划任务插件开关:确保这个选项是开启的。
- 保存设置。
- 手动触发一次:为了确保配置生效,你可以手动访问一下这个地址(请将你的域名替换掉):
http://你的域名/dede/task_do.php访问后,系统会立即执行一次计划任务,检查并发布到期的文章。
常见问题与解决方案
问题1:设置了定时发布,但时间到了文章没有自动发布。
原因及解决方案:
- 计划任务未开启:这是最常见的原因,请按照上面的“重要前提”部分,检查并开启计划任务。
- 服务器未配置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”。
- 服务器时间不正确:检查你的服务器时间和北京时间是否一致,如果服务器时间比北京时间慢,那么文章发布就会延迟。
- 文章状态异常:检查文章在数据库中的状态,登录数据库,找到
dede_archives表,查看你的文章记录,arcrank字段如果不是-1(仅作者可见)或0(未审核),或者senddate(发布时间)字段不正确,则可能是数据问题。 - 权限问题:确保运行网站的用户(如
www-data)有权限执行task_do.php脚本。
问题2:我想让定时发布的内容在发布前就处于“待审核”状态,方便我检查。
默认行为:DedeCMS 在定时发布期间,文章的默认状态是“仅作者可见”(arcrank = -1),前台用户是看不到的。
如何改为“待审核”状态?
这个需要修改代码,因为 DedeCMS 没有提供直接的选项。
- 找到核心文件:打开
/dede/archives_edit.php文件(用于编辑已有文章)。 - 查找代码:在文件中搜索
//更新文档或类似的代码块。 - 修改 SQL 语句:找到执行
UPDATEdede_archives的地方,你会看到类似这样的代码:$query = "UPDATE dede_archives SET ismake='$ismake', arcrank='$arcrank', ... WHERE id='$aid'";你需要确保
$arcrank变量的逻辑是:senddate(发布时间)大于当前时间,arcrank应该被设置为1(待审核),而不是-1(仅作者可见)。 - 添加判断逻辑:在
archives_edit.php中,在更新数据库之前,可以加入如下逻辑:// 获取当前时间和文章发布时间 $nowtime = time(); if ($senddate > $nowtime) { // 如果发布时间晚于当前时间,则设置为待审核状态 $arcrank = 1; }注意:这是一个代码层面的修改,需要一定的 PHP 和 SQL 知识,操作前请务必备份原文件!
总结与最佳实践
| 功能点 | 说明 |
|---|---|
| 核心操作 | 在文章编辑页面的“发布时间”字段设置一个未来的时间,然后保存。 |
| 必要条件 | 必须在【系统基本参数】->【计划任务】中开启计划任务,并设置合理的执行间隔。 |
| 验证方法 | 设置好后,检查文章列表的状态是否为“仅作者可见”,时间到了,检查文章是否变为“已发布”。 |
| 手动触发 | 可以手动访问 http://你的域名/dede/task_do.php 来立即执行一次发布任务。 |
| 高级需求 | 如果希望定时文章在发布前为“待审核”状态,需要修改 archives_edit.php 等核心文件,不推荐新手操作。 |
希望这份详细的指南能帮助你成功使用 DedeCMS 的定时发布功能!
