织梦定时更新插件如何实现网站内容自动更新?

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 织梦建站 正文

理解“定时更新”的原理

我们要明白织梦(DedeCMS)本身没有内置一个叫“定时更新”的官方插件,所谓的“定时更新插件”,通常是指利用以下几种技术之一来实现自动化内容的发布和更新:

织梦定时更新网站插件
(图片来源网络,侵删)
  1. 服务器端计划任务:这是最常用、最稳定、最强大的方式,通过设置服务器的 Cron Job (定时任务),让服务器在指定的时间(每天凌晨3点)自动访问一个特定的PHP脚本,这个脚本会执行织梦的后台操作,如:采集、生成HTML、发布文章等。
  2. 前台JS定时刷新:这种方式比较初级,通常是在首页的某个角落放置一段JavaScript代码,让页面每隔一段时间(10分钟)自动刷新一次,这种方式不能发布新内容,只能让搜索引擎蜘蛛觉得网站“活跃”,可能会重新抓取页面,对SEO有一定帮助,但作用有限。
  3. 第三方平台推送:通过一些SEO工具或平台,定时将您网站的新内容URL推送给搜索引擎,这本身不更新网站,但能加速收录。

对于真正意义上的“定时更新”(比如定时发布文章、定时生成首页),服务器Cron任务 + 自定义PHP脚本是最佳方案。


推荐方案:使用Cron任务 + 自定义脚本

这种方法的核心是:创建一个脚本文件,然后用服务器的定时任务去定期调用它。

第一步:创建定时更新脚本

  1. 在您的网站根目录下,创建一个新的PHP文件,例如命名为 auto_update.php
  2. 将以下代码复制并粘贴到 auto_update.php 文件中。
<?php
/**
 * 织梦CMS定时更新任务脚本
 * 请将此文件上传到网站根目录,并通过Cron任务定时访问
 */
// 1. 引入织梦的核心文件
// 如果您的网站安装在子目录,请修改路径,require_once('dede/config.php');
require_once(dirname(__FILE__)."/include/common.inc.php");
require_once(DEDEINC."/arc.partview.class.php");
// 2. 定义要更新的栏目ID或首页模板
// 请在这里填入您需要更新的栏目ID,多个ID用逗号隔开,留空则更新首页。
// $updateChannelIds = '1,5,8,10';
$updateChannelIds = '';
// 3. 定义要更新的首页模板文件名
// 默认是index.htm,如果您的首页模板是别的,请修改
$homeFile = 'index.htm';
// ========================================
// 以下代码通常无需修改
// ========================================
echo "织梦定时更新任务开始执行...<br />\n";
echo "执行时间: " . date('Y-m-d H:i:s') . "<br />\n";
// 更新首页
echo "正在更新首页...<br />\n";
$pv = new PartView();
$pv->SetTemplet($cfg_basedir . $cfg_templet_dir . "/" . $homeFile);
$pv->SaveToHtml($cfg_basedir . $homeFile);
echo "首页更新完成!<br />\n";
// 如果指定了栏目ID,则更新指定栏目
if (!empty($updateChannelIds)) {
    $channelIds = explode(',', $updateChannelIds);
    echo "开始更新指定栏目...<br />\n";
    foreach ($channelIds as $cid) {
        $tid = intval($cid);
        if ($tid > 0) {
            echo "正在更新栏目ID: {$tid} ...<br />\n";
            $pv = new PartView($tid);
            $pv->SetTemplet($pv->MakeTemplet()); // 使用栏目默认模板
            $pv->SaveToHtml();
            echo "栏目ID: {$tid} 更新完成!<br />\n";
        }
    }
    echo "所有指定栏目更新完成!<br />\n";
}
echo "任务执行完毕!<br />\n";
echo "执行结束时间: " . date('Y-m-d H:i:s') . "<br />\n";
?>

脚本说明

  • 这个脚本会更新您的网站首页,并根据您设置的 $updateChannelIds 变量更新指定的栏目。
  • 重要:请务必修改 $updateChannelIds$homeFile 这两个变量,使其符合您的网站实际情况。

第二步:通过Cron任务定时调用脚本

您需要设置服务器的定时任务,让它定期访问 auto_update.php 这个文件。

织梦定时更新网站插件
(图片来源网络,侵删)

如何找到Cron设置?

  • 虚拟主机用户:登录您的虚拟主机控制面板(如cPanel、Plesk、宝塔面板等),在里面找到“计划任务”(Cron Jobs)或“任务计划”选项。
  • VPS/云服务器用户:通过SSH连接服务器,直接编辑 /etc/crontab 文件,或者使用 crontab -e 命令来编辑当前用户的定时任务。

Cron任务命令示例

假设您的网站域名是 www.yourdomain.com,那么访问脚本的URL就是 http://www.yourdomain.com/auto_update.php

  • 宝塔面板设置

    织梦定时更新网站插件
    (图片来源网络,侵删)
    1. 进入宝塔面板 -> 计划任务。
    2. 点击“添加任务”。
    3. 任务类型:选择“访问URL”。
    4. 执行周期:选择您需要的频率,每天”。
    5. 执行时间:设置一个具体时间,03:00”。
    6. URL地址:填入 http://www.yourdomain.com/auto_update.php
    7. 备注:写上“织梦定时更新网站”。
    8. 点击“添加”。
  • Linux服务器Crontab命令: 在SSH中输入 crontab -e,然后添加以下一行代码,表示每天凌晨3点执行一次。

    0 3 * * * /usr/bin/wget -q -O /dev/null http://www.yourdomain.com/auto_update.php
    • 0 3 * * *:表示分(0) 时(3) 日() 月() 周(*),即每天3点整。
    • /usr/bin/wget:使用wget命令来访问URL,请确保您的服务器已安装wget,如果没有,可以用 curl 替换:
      0 3 * * * /usr/bin/curl -s http://www.yourdomain.com/auto_update.php > /dev/null 2>&1
    • -q -O /dev/null:表示静默模式,不输出任何内容,并将结果丢弃,避免产生邮件。

高级应用:定时发布文章(需要二次开发)

如果您需要实现定时发布新文章的功能,这超出了简单脚本的范围,需要对织梦进行二次开发。

基本思路

  1. 后台扩展:在织梦后台的文章发布页面,增加一个“发布时间”字段,并使用日期时间选择器。
  2. 修改发布逻辑:修改织梦处理文章发布的PHP文件(通常是 dede/article_add.php),增加判断逻辑:如果设置的发布时间是未来的时间,则将文章状态设置为“待审核”或“未发布”,并保存到数据库,但不立即生成HTML。
  3. 编写发布脚本:编写一个PHP脚本(publish_articles.php),这个脚本会查询数据库中所有状态为“待发布”且当前时间已超过其“发布时间”的文章。
  4. 执行发布:对于查到的每篇文章,调用织梦内部的方法将其状态改为“已发布”,并重新生成该文章的HTML页面。
  5. 设置Cron任务:和前面一样,设置一个Cron任务(例如每5分钟或每小时运行一次)来执行 publish_articles.php 脚本。

这个功能比较复杂,如果您需要,可以寻找专门提供织梦二次开发的程序员来完成。


注意事项

  1. 文件权限:确保 auto_update.php 和它将要生成的HTML文件(如 index.htm)具有正确的读写权限(通常是755或644)。
  2. 服务器环境:确保您的服务器支持Cron任务和PHP脚本执行。
  3. 脚本安全auto_update.php 文件不应该被公开访问,为了安全,您可以在执行完Cron任务后,将其从服务器删除,或者将其重命名为一个复杂的、不易猜测的文件名。
  4. 测试:在设置Cron任务前,最好先手动在浏览器中访问 http://www.yourdomain.com/auto_update.php,看看是否能正常执行并更新网站。
  5. 性能:如果网站栏目非常多,一次性生成所有页面可能会占用较多服务器资源,建议分时段、分批次更新。
方案 优点 缺点 适用场景
Cron + 自定义脚本 功能强大、稳定可靠、可自定义 需要手动创建文件和设置服务器任务 强烈推荐,用于定时生成首页、栏目页,保持网站活跃。
前台JS定时刷新 实现简单,无需服务器权限 功能有限,不能发布新内容,仅能刷新页面 适用于小型网站,仅为了让蜘蛛认为网站有更新。
定时发布文章 功能最完善,自动化程度高 需要二次开发,代码复杂 量巨大、需要完全无人值守运营的网站。

对于绝大多数用户来说,使用Cron任务调用我上面提供的 auto_update.php 脚本,是解决“织梦定时更新网站”需求最直接、最有效的方法。

-- 展开阅读全文 --
头像
卢松松博客模板dede怎么用?
« 上一篇 03-08
织梦更新文章为何时间不变?
下一篇 » 03-08

相关文章

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

目录[+]