定时发布概述
织梦CMS支持文章定时发布功能,允许管理员提前编辑好文章内容,设置未来的发布时间,系统会在指定时间自动将文章状态改为已审核并发布。这对于节假日内容规划、批量内容排期非常有帮助。
一、设置文章的定时发布时间
在发布文章时设置定时发布:
- 进入
核心 > 内容管理,选择栏目后点击"添加文档" - 填写文章标题、内容等信息
- 在"发布时间"字段中设置未来的日期和时间
- 文章状态可以选择:
- 已审核(0):到达设定时间后自动前台可见
- 待审核(-1):到达时间后仍需人工审核
二、通过SQL设置定时发布
-- 将文章发布时间批量设置为未来时间
UPDATE dede_archives
SET pubdate=UNIX_TIMESTAMP('2024-08-01 10:00:00'),
senddate=UNIX_TIMESTAMP('2024-08-01 10:00:00')
WHERE typeid=3 AND id=125;
-- 设置为当前时间24小时后发布
UPDATE dede_archives
SET pubdate=UNIX_TIMESTAMP() + 86400,
senddate=UNIX_TIMESTAMP() + 86400
WHERE typeid=3 AND arcrank=-1;
三、定时任务自动处理发布
通过服务器定时任务配合PHP脚本实现自动发布:
<?php
// auto_publish.php - 定时发布处理脚本
require_once(dirname(__FILE__)."/include/common.inc.php");
$now=time();
// 查找发布到时间但仍为待审核状态的文章
$sql="UPDATE dede_archives
SET arcrank=0
WHERE arcrank=-1 AND pubdate <={$now} AND pubdate > 0";
$dsql->ExecuteNoneQuery($sql);
$affected=$dsql->GetAffectedRows();
// 记录发布日志
echo date('Y-m-d H:i:s') . " - 自动发布了 {$affected} 篇文章\n";
// 可选:自动生成HTML
if($affected > 0){
// 更新缓存
UpDateCatCache();
echo "缓存已更新\n";
}
?>
四、设置Crontab定时任务
# Linux Crontab - 每5分钟检查一次是否有待发布文章 */5 * * * * /usr/bin/php /www/web/yourdomain/auto_publish.php >> /www/web/logs/publish.log 2>&1 # Windows计划任务 # 创建bat文件: # @echo off # C:\php\php.exe C:\www\yourdomain\auto_publish.php # 然后添加到Windows任务计划程序,设置每5分钟运行一次
五、栏目级别的定时发布策略
不同栏目可设置不同的发布策略:
新闻栏目: 即时发布 + 紧急新闻优先 资讯栏目: 工作日 9:00-18:00 每小时发布2篇 专栏文章: 每周一、三、五 上午10:00发布 活动公告: 提前3天发布,到期自动下线
六、发布队列管理
管理待发布的文章队列:
-- 查看所有待定时发布的文章(按发布时间排序)
SELECT id, title, typeid,
FROM_UNIXTIME(pubdate) as pub_time,
arcrank
FROM dede_archives
WHERE pubdate > UNIX_TIMESTAMP() AND arcrank=-1
ORDER BY pubdate ASC;
-- 查看已过发布时间的待审核文章(可能遗漏)
SELECT id, title, typeid,
FROM_UNIXTIME(pubdate) as should_pub_time
FROM dede_archives
WHERE pubdate <=UNIX_TIMESTAMP() AND arcrank=-1;
实用建议:建议在定时发布脚本中增加日志记录和异常通知功能。当自动发布失败或文章数量异常时(如一次性发布超过100篇),发送邮件或站内通知提醒管理员检查。