一个漂亮的AeroCore 子主题组件----公告通知

公告通知(announcement)

一个用于向访客展示公告 / 通知的 AeroCore 子主题组件。漂亮、响应式、自动适配深色模式,可单条展示,也可多条轮播。

 

项目 内容
组件 ID announcement
名称 公告通知
版本 1.0.0
作者 已名知名
作者主页 https://8src.com/
父主题 AeroCore
适用页面 首页(home)、文章页(article)
依赖 父主题 AeroApi、主题 CSS 变量(深色模式)、packages/ 自动加载机制

一、功能简介

本组件用于在站点显眼位置向用户传达公告信息(活动、维护、更新、规则等)。设计目标:好看、不挡事、哪儿都能放

  • 四种语义类型:信息(蓝)/ 成功(绿)/ 警告(黄)/ 危险(红),左侧强调色条 + 圆形图标自动区分。
  • 单条 & 多条轮播:填一条就单条展示;填多条进入轮播模式,自动切换 + 左右箭头 + 指示点(悬停暂停)。
  • 滚动置顶固定:开启后组件吸顶(position: sticky),访客滚动页面时始终可见。
  • 自动消失倒计时:开启后底部进度条实时倒计时,到点自动隐藏;鼠标悬停暂停,离开继续。
  • 手动关闭:访客可点关闭按钮,关闭状态写入 localStorage,同配置不再出现。
  • 响应式:flex 布局 + min-width:0 防撑破,窄屏(≤480px)自动收窄,长链接/长文本自动换行。
  • 深色模式自适应:全部用主题 CSS 变量(--bg-card / --text-primary / --border-primary 及状态色),浅/深自动切换,无需手写 html[data-theme="dark"]

 

一个漂亮的AeroCore 子主题组件----公告通知


二、目录结构

 

```
packages/announcement/
├─ index.php    # 组件配置:form_schema、default_data、元数据
├─ render.php   # 渲染输出(严格转义)
├─ style.css    # 卡片样式、轮播/进度条/指示点、深色模式、响应式
├─ main.js      # 关闭、轮播、倒计时逻辑(rAF 驱动、悬停暂停)
└─ README.md    # 本说明
```

 

文件放入 packages/announcement/ 后,CSS / JS 由 AeroCore 自动加载,无需手动 enqueue

 


三、配置项说明

1. 单条模式(不填「多条公告」时生效)

配置项 类型 默认 说明
公告标题 text 重要公告 单条公告标题
公告内容 textarea 示例文案 单条正文,支持基础安全 HTML(<a> <b> <br> <strong> 等),已用 wp_kses_post 过滤
公告类型 select info info / success / warning / danger 四选一
自定义图标 icon_picker 留空用类型默认图标;填写则覆盖
按钮链接 link 留空不显示按钮
按钮文字 text 查看详情 按钮上显示的文字
允许访客手动关闭 switch 关闭后写入 localStorage 记忆
滚动时置顶固定 switch 开启后吸顶可见
自动消失 switch 开启后倒计时结束自动隐藏(不记忆,每次加载触发)
自动消失秒数 number 5 与「自动消失」配合,≥1

2. 多条轮播模式(填写「多条公告」后生效)

配置项 类型 说明
多条公告 list 每项含:标题、内容、类型、图标、按钮链接、按钮文字;填了此项即忽略上方所有单条字段,进入轮播
轮播间隔秒数 number 多条时每条停留秒数,≥1,悬停暂停

轮播项内字段与单条模式一一对应,可每条单独设定类型 / 图标 / 按钮。

一个漂亮的AeroCore 子主题组件----公告通知一个漂亮的AeroCore 子主题组件----公告通知


四、使用步骤

  1. 将整个 packages/announcement/ 目录复制到你的 AeroCore-Child/packages/ 下。
  1. 后台「主题设置 → 页面布局 → 第三方组件」中找到 「公告通知」,拖入画布。
  1. 在右侧面板配置标题 / 内容 / 类型 / 按钮 / 增强开关(置顶、自动消失、轮播)等。
  1. 保存页面布局。

常见问题

  • 后台看不到新组件:重新保存一次「页面布局」以刷新组件缓存。
  • 样式未生效:清除浏览器缓存(AeroCore 对已加载资源附带 filemtime 版本号,通常刷新即可)。
  • 改了配置不更新:删除旧组件实例、重新添加一次(AeroCore 会缓存组件 schema)。

五、类型与样式对照

类型 强调色(变量) 默认图标 适用场景
信息 info --theme-color 铃铛 通知、说明、新功能
成功 success --color-success 对勾 上线、达成、通过
警告 warning --color-warning 感叹号 维护、限额、注意
危险 danger --color-danger 叉号 故障、封禁、紧急

深色模式下配色由主题变量自动切换,无需额外处理。


六、交互逻辑(main.js 摘要)

  • 手动关闭:点击关闭按钮 → 隐藏组件 → 把 key(取自组件配置)写入 localStorage,再次加载同 key 不再显示。
  • 轮播:多条时启动 requestAnimationFrame 计时,到点切下一条;左右箭头可手动切换;指示点显示当前位置;鼠标悬停暂停。
  • 自动消失:开启后进度条随倒计时收缩,归零自动隐藏;悬停暂停,离开恢复。
  • 所有计时基于 requestAnimationFrame,切换标签页/后台时自动降频,省电且不漂移。

七、开发约束(遵循 AeroCore 子主题规范)

  • render.php 中不写 use AeroCore\xxx;取数一律走 AeroApi::option() 等父主题接口。
  • 输出转义:标题 / 图标用 esc_html(),链接用 esc_url(),HTML 属性用 esc_attr(),正文用 wp_kses_post() 放行安全基础 HTML。
  • id 唯一且目录名与 id 一致(announcement),导入时自动落盘到同名目录。
  • 样式全部使用主题 CSS 变量,保证深浅色与站点主题一致。
下载地址
夸克
announcement.zip
密码:无
上一篇 Auto MD5 Slug自动将中文别名转换为 MD5 哈希,告别冗长 URL 编码