详细介绍
改版不用动模板,
运营在后台点完
换一张 banner、加一条友链、上一份新目录、换掉 Meta Pixel、给老客户发一轮节日邮件——过去都要改模板再上线,现在都在后台。改完能查、出错能回滚、日志会自己清。
- 版本 / 作者
- 1.3.1 · HMS
- 要求
- CMS 4.7+ / PHP 8.1+
- 后台菜单
- 15 个
- 数据表
- 15 张
- EDM 批次
- 20 封 / 批
- 片段快照
- 近 20 版
七件反复出现的小事,各有一个位置
插件没有发明新功能,只是把「必须改模板、只能靠人盯、出错没法回退」这三类事挪到了能点、能查、能撤销的地方。
广告写在 index.html 里
换一张 banner 要改代码再上传;加一条友链要手写 ;改模板还容易碰坏别处。
广告「分类 → 位 → 广告」三级;友链分类 + 链接;HERO 逐条维护。前台只放一行调用标签。
换 Pixel 就得重新上线
GA4、GTM、Meta、TikTok、百度统计全在 header/footer,改错难复原,做灰度测试更麻烦。
代码管理存片段,自动插到 head/body 前;全站或仅首页或路径前缀,可停用,每次改动留快照可回滚。
谁跟进、从哪来,全靠翻邮件
跟进漏了丢单,也说不清哪条广告真的带来了客户。
线索池五档流转;广告点击 → 订阅/询盘记进归因表,后台可查。
同一批客户收到两封
一次请求发完几百封,超时断在半路,再点只能从头发。
每批 20 封推进,进度写回任务行;重进页面从 N+1 续发,已发的不重复收。
旧版检测其实是空的
1.2.0 及以前取到 cURL 句柄从未执行,状态码恒 0,全部判失败。现在 HEAD 真探测、10 路并发,405/501 判可访问。
只增不减
保留 7–3650 天(默认 180),进设置页每天最多自动清一次;只清发送记录与归因流水。
改错只能凭记忆
每个片段留最近 20 版快照,可逐条回滚;回滚前当前内容再存一份。
三条主线,各有硬规则
下面的数字都来自代码,不是宣传语。
三级结构 + 点击跳转
分类删掉,其下广告位归入「未分类」不删数据。广告位有唯一 code;广告支持图片/文字/HTML 三种形式,起止时间留空即不限。链接走 m=hit 计数后 302 跳转。
20 封一批,断点续发
每批结束把处理的订阅 ID、成功数、失败数写回任务行;状态 running/done/failed。中断后重进页面提示「已发送 N / M」,再点从 N+1 继续。
页眉页脚,原样输出
不转义、不解析、不改写;含 拒绝保存,单条上限 200KB,只有超级管理员可写。范围:全站 / 仅首页 / 路径前缀。后台页面不注入。
| 内置模板 | 说明 |
|---|---|
| 五套 + 骨架 | Google Analytics 4 / GTM / Meta Pixel / TikTok Pixel / 百度统计 / 空白 HTML-JS。ID 全是占位符(G-XXXXXXXXXX、PIXEL_ID 等),必须换成自己的再保存 |
| 历史版本 | 内容真的变了才存快照,每片段留最近 20 条;回滚前当前版也会存一份,回错了能再滚回来 |
| 注入兜底 | 主题结构特殊时在模板里手动调 M('Snippet','Hmops')->render('header') 与 render('footer') |
两个自查工具:查死链,也查自己的运营位
一个查「外面的链接还通不通」,一个查「自己的运营位有没有空着」。
HEAD + curl_multi 10 路
扫描启用的广告链接、启用的友链、文档地址。405 / 501 判为可访问(服务器不支持 HEAD),空链 / 非 http / 文件缺失单独标「跳过」并写原因,不算失败。
1.2.0 及以前的结果全部是失败,属假数据,重跑一次即可。
严重 / 提示 两级
严重:启用的图片广告没图、HERO 缺背景图、广告位一条广告都没有。提示:内容空、失效时间已过但仍启用。每条带「前往修复」直达编辑页。
它是自查,不是自动修复:三个月后没人记得哪条广告过期了,这一页替你想起来。
只清两张流水表
保留 7–3650 天,默认 180。进设置页每天最多自动清一次,也可手动「立即清理超期日志」。范围只有发送记录与转化归因,线索、订阅、广告不动。
业务数据不该被自动删除;流水表才是会无限增长的那部分。
设置、迁移、卸载:三件容易踩的事
六项联系方式、一张通用二维码;迁移是先清空再重建;卸载会连片段历史一起删。
| 项 | 做法 | 注意 |
|---|---|---|
| 联系方式 | 六项:电话 / 手机 / 邮箱 / 地址 / 微信 / Skype,每项右侧带单条调用代码与复制 | 空的字段前台整行不输出 |
| 通用二维码 | 上传 jpg/png/gif/webp/svg,≤10MB;用 qrcode_html() 或 qrcode_html(160) 输出 | 未上传时前台不输出,也不留空占位 |
| 配置迁移 | 导出 JSON 备份;导入粘贴 JSON 后重建 | 导入先清空广告 / 友链 / HERO,务必先导出 |
| 迁移不含 | 邮件模板、订阅名单、线索、代码片段不跟着走 | 换站要单独搬 |
| 卸载 | 删 15 张表 + 清理两处 static 目录 | 片段与历史版本一起删,重装要重录 |
覆盖升级后三件事必须做
1.3.1 修了两个会让页面直接白屏的 bug,但覆盖文件不等于全部就位。
覆盖 dayrui 并清缓存
覆盖到站点根目录后清一次模版缓存;否则仍读旧编译结果,报同一行号的 ParseError。
进一次这三个页面
代码管理(补建历史表)、邮件营销(补 last_id / updatetime)、运营设置(出现日志清理区块)。
手工改左侧菜单
左侧菜单存数据库,覆盖不会自动改。16 项变 15 项、删「邮件订阅」、把「邮件营销」排到「线索池」之后。
- 只有点击
- 广告统计是点击数,不含曝光,同一访客重复点会重复计。
- 只探 HEAD
- 需登录或只支持 GET 的地址,断链结果不准。
- 无退信明细
- 群发只记成功/失败数量,没有开信率与失败原因。
- 导入不可合并
- 先清空再重建,没有预览与逐条校验提示。
- 片段不审代码
- 不查语法与安全,只拦 PHP 标签和大小。
- 无多语言字段
- 文案只有一份,多语种站要按语种分套广告位。