织梦cms栏目定时发布

定时发布概述

织梦CMS支持文章定时发布功能,允许管理员提前编辑好文章内容,设置未来的发布时间,系统会在指定时间自动将文章状态改为已审核并发布。这对于节假日内容规划、批量内容排期非常有帮助。

一、设置文章的定时发布时间

在发布文章时设置定时发布:

  1. 进入 核心 > 内容管理,选择栏目后点击"添加文档"
  2. 填写文章标题、内容等信息
  3. "发布时间"字段中设置未来的日期和时间
  4. 文章状态可以选择:
    • 已审核(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篇),发送邮件或站内通知提醒管理员检查。