凌晨停机维护,公告发在群里没人看

系统全局通知 使用文档
系统全局通知 使用文档

维护窗口是凌晨两点到四点,公告发在客户群里。第二天上午还是有人来问「系统是不是坏了」,因为他们没翻群消息。

系统全局通知(PageNotice)把公告做成一条横幅,钉在站点每个页面的顶部。它只依赖 Vendor,在「功能设置 → 系统全局通知」里配置。

四个配置项

  • PageNotice_Start:通知开始时间
  • PageNotice_End:通知结束时间
  • PageNotice_Title:标题
  • PageNotice_Content:内容,富文本

时间判断的逻辑是:开始时间没到就不显示,结束时间已过也不显示,两个都空则一直显示。所以想做「只在维护窗口那两小时出现」,把两个时间都填上;想做「从现在起到我手动关掉」,只填开始时间。

标题和内容只要有一个非空,横幅就会出现。两个都空时整个模块不输出任何东西。

它是怎么出现在页面上的

通过一个叫 PageBodyAppend 的钩子注入,和 ServiceBar 用的是同一个钩子。只要主题模板渲染了这个钩子,全站页面都会带上,不用改模板。

横幅本身是 position:fixed 钉在顶部,z-index 是 10000,背景和文字用的是系统警告色变量,跟主题配色一致。

页面顶部的一条全局通知横幅,右侧是「我知道了」按钮

关闭按钮的真实行为

横幅下面有一个「我知道了」按钮,点一下横幅消失,同时往浏览器写一个 cookie,键名是 PageNoticeClosed_ 加一段 md5,那段 md5 是「标题 + 内容」拼起来的哈希。

这里有两个实际影响:

第一,这个 cookie 没有设置过期时间,是会话级的。用户关掉浏览器再打开,横幅会重新出现。想让它一次关闭长期不再出现,得自己在脚本里加 max-age。

第二,改文案等于换了一次通知。标题或内容里改一个字,md5 就变了,cookie 键也变了,之前点过「我知道了」的用户会再看到一次。改错别字要留意这一点,频繁改动会让用户觉得这个横幅关不掉。

文档里写了但没做的

功能文案里列了「弹窗通知」「显示位置配置」「多端适配」,这三项在模块代码里都找不到实现。实际形态只有一种:顶部横幅。没有弹窗,不能改成页面底部或者角标,也不区分电脑端和移动端。

要弹窗效果得自己改那个模板文件。

适合与不适合

适合:全站级别的临时告知,停机维护、系统升级、重要活动。一次配置,全站生效,到期自动消失。

不适合:需要定向投放的(所有访客看到的都一样,不区分登录状态、不区分页面);需要统计触达的(没有埋点);需要多条轮播的(一次只能配一条,新的会覆盖旧的)。

上线前

先填标题和内容,前台随便打开一个页面确认横幅出来了、位置没挡住导航。它是钉在顶部的,如果你的主题本身有固定顶栏,两者会叠在一起,需要在样式里加个偏移。

再把结束时间填上。这个最容易漏,忘了填的话通知会一直挂着,直到有人想起来去清空内容。

最后用无痕窗口点一次「我知道了」,刷新看是不是还在。如果还在,说明 cookie 没写进去,检查一下站点的 cookie 域名配置。

更新: 2026-11-13 19:02:15
QQ
微信
客服