织梦的M站默认是PC站的一个子站点,其首页内容通常由PC站首页的内容通过特定规则自动生成,要实现M站首页的自动更新,核心思路是让触发PC站首页更新的机制,同时也能触发M站首页的重新生成。

(图片来源网络,侵删)
下面我将从原理分析到多种实现方法,再到推荐方案,为您提供一个完整、可操作的指南。
原理分析
-
M站首页如何生成?
- 织梦M站默认会调用PC站首页的模板,通常位于
/templets/default/index_m.htm。 - 当你访问M站首页时,如果发现
/m/index.html这个静态文件不存在或已过期,织梦就会调用index_m.htm模板,并读取PC站首页的相关数据(如推荐文章、热点文章、幻灯片等),然后生成/m/index.html这个静态文件。 - M站首页的“内容源”是PC站的数据,而“生成模板”是
index_m.htm。
- 织梦M站默认会调用PC站首页的模板,通常位于
-
如何触发更新?
- 手动更新:登录织梦后台 -> 核心 -> 频道管理 -> 选择“主页” -> 点击“更新主页”,这会强制重新生成PC站的首页
/index.html。 - 自动更新:我们需要让系统在特定操作(如发布新文章、更新文章)后,自动执行上述“手动更新”的流程。
- 手动更新:登录织梦后台 -> 核心 -> 频道管理 -> 选择“主页” -> 点击“更新主页”,这会强制重新生成PC站的首页
实现方法
主要有以下几种方法,从简单到复杂,推荐度递增。

(图片来源网络,侵删)
手动更新(最基础,不推荐作为最终方案)
这是最直接的方法,但完全依赖人工。
- 操作:每次更新完PC站内容后,都去后台手动更新一次PC站主页,然后访问M站首页(
/m/),系统会自动检测并生成M站首页。 - 缺点:容易遗忘,效率低下,无法实现真正的“自动”。
利用织梦的“计划任务”功能(推荐,最稳定)
织梦自带一个强大的计划任务功能,可以定时执行PHP脚本,我们可以利用它来定时更新主页。
操作步骤:
-
创建更新主页的PHP脚本
- 在你的网站根目录(
DedeCMS/)下,创建一个新文件,命名为auto_update_homepage.php。 - 将以下代码复制到该文件中:
<?php /** * 织梦M站/PC站首页自动更新脚本 * 使用方法:通过织梦后台的计划任务来调用此脚本 */ // 引入织梦核心文件 require_once (dirname(__FILE__) . "/include/common.inc.php"); require_once DEDEINC."/arc.partview.class.php"; // 1. 更新PC站首页 $pv = new PartView(); $pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/index.htm"); $pv->SaveToHtml($cfg_basedir . "/index.html"); echo "PC站首页更新成功!\n"; // 2. 更新M站首页 // 注意:如果你的M站模板路径不是 default,请修改下面这行代码 $pv_m = new PartView(); $pv_m->SetTemplet($cfg_basedir . $cfg_templets_dir . "/default/index_m.htm"); $pv_m->SaveToHtml($cfg_basedir . "/m/index.html"); echo "M站首页更新成功!\n"; ?>
- 代码解释:
require_once ...:引入织梦的核心文件,使脚本拥有织梦的环境。new PartView():创建一个页面视图对象,用于生成静态HTML。SetTemplet(...):指定要使用的模板文件,PC站是index.htm,M站是index_m.htm。请确保这里的路径与你的实际情况一致。SaveToHtml(...):将模板内容生成并保存到指定的静态文件路径,PC站是/index.html,M站是/m/index.html。
- 在你的网站根目录(
-
上传脚本文件
- 使用FTP或文件管理器,将你创建好的
auto_update_homepage.php文件上传到网站根目录。
- 使用FTP或文件管理器,将你创建好的
-
设置织梦计划任务
- 登录织梦后台。
- 进入【系统】 -> 【计划任务】。
- 点击左上角的【新增任务】。
- 任务名称:填写一个易于识别的名称,每日自动更新首页”。
- 执行程序:填写你刚刚上传的脚本路径,即
/auto_update_homepage.php。 - 执行级别:选择“系统级别”。
- 循环执行:选择执行周期,对于首页更新,通常选择“按天”比较合适,你可以设置在网站访问量最低的时段执行,比如凌晨3点。
- 最大执行时间:可以留空或设置一个较大的值,
1000。 - 保存。
-
启用任务
保存后,任务会出现在任务列表中,点击任务右侧的【启动】按钮,使其开始生效。
优点:
- 稳定可靠:基于织梦自身功能,与系统耦合度高。
- 定时精准:可以精确控制更新时间。
- 无需服务器额外权限:只需要基本的PHP文件读写权限。
缺点:
- 更新有延迟:只有在设定的时间点才会更新,你上午10点发布文章,要等到凌晨3点首页才会更新,这对于追求实时性的网站可能不够。
利用“发布文章/编辑文章”的钩子(实时性最强,但稍复杂)
这个方法的目标是:每当有文章被发布、编辑或删除时,就立即触发首页更新。 这需要修改织梦的核心文件,请务必在修改前备份!
操作步骤:
-
找到核心钩子文件
- 文件路径:
/dede/article_edit.php(用于编辑文章) 和/dede/article_add.php(用于添加文章),织梦V5.7版本后,很多操作都统一在/dede/content_list.php中处理,但最直接和保险的还是修改article_add.php和article_edit.php。
- 文件路径:
-
在
article_add.php中添加代码- 找到文件末尾的
ShowMsg("成功发布一篇新的文章!", $gourl);这行代码。 - 在这行代码之前,插入我们之前创建的更新首页的PHP代码片段。
// 在 article_add.php 中,在 ShowMsg 之前添加 // 引入更新首页的函数 require_once (dirname(__FILE__) . "/../include/common.inc.php"); require_once DEDEINC."/arc.partview.class.php"; function updateHomepages() { $pv_pc = new PartView(); $pv_pc->SetTemplet($cfg_basedir . $cfg_templets_dir . "/index.htm"); $pv_pc->SaveToHtml($cfg_basedir . "/index.html"); $pv_m = new PartView(); $pv_m->SetTemplet($cfg_basedir . $cfg_templets_dir . "/default/index_m.htm"); $pv_m->SaveToHtml($cfg_basedir . "/m/index.html"); } // 执行更新 updateHomepages(); - 找到文件末尾的
-
在
article_edit.php中添加代码- 同样,找到文件末尾的
ShowMsg("成功更改文档!", $gourl);这行代码。 - 在它之前,添加与上面完全相同的代码片段。
- 同样,找到文件末尾的
-
(可选)在删除文章时也触发
- 文件路径:
/dede/del_all.php(用于批量删除) 或/dede/archives_do.php(用于单个删除)。 - 在执行删除操作并成功后,也加入上述的更新代码。
- 文件路径:
优点:
- 实时性最高一有变动,首页马上更新,用户体验最好。
- 无需额外脚本:逻辑内嵌在核心流程中。
缺点:
- 修改核心文件:升级织梦时,这些修改可能会被覆盖,需要重新修改。
- 有一定风险:错误的修改可能导致网站后台功能异常。
- 可能造成性能开销:如果服务器性能不高,频繁生成首页可能会对服务器造成轻微压力。
推荐方案与总结
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 手动更新 | 简单、无风险 | 效率低、易遗忘、非自动 | 个人博客、更新频率极低的网站 |
| 计划任务 | 稳定、可靠、定时精准、无风险 | 更新有延迟 | 绝大多数网站的首选方案,特别是企业站、资讯站等 |
| 文章钩子 | 实时性最高、用户体验好 | 修改核心文件、有升级风险、性能开销 | 实时性要求极高的网站(如新闻门户、抢购活动页) |
综合建议:
对于99%的用户,我强烈推荐使用 利用织梦的“计划任务”功能。
- 为什么? 它在“稳定性”和“自动化”之间取得了完美的平衡,你只需要设置一次,就能一劳永逸,即使网站升级,只要你的
auto_update_homepage.php文件没被覆盖,计划任务配置依然存在,风险极低,将更新时间设定在凌晨,既能保证内容的相对及时性,又不会影响网站白天的访问速度。
如果您的网站是新闻类或对信息时效性有极致要求,可以考虑 方法三,但请务必做好文件备份,并评估服务器的承受能力,你也可以将方法二和方法三结合使用,比如用方法三处理重要文章的实时更新,用方法二作为兜底,确保所有内容最终都能被更新到首页。
