kate522
8b999444b2
fix(icons): 图标卡片支持内置 SVG 与自定义 SVG,修复前端图标不显示
顶部多功能组件的图标卡片只能显示 FA5 图标。后台「选择图标 → 内置 SVG」
页签写入的是 zibsvg-{key},但渲染器把它拼成了
<i class="fa fas fa-zibsvg-hot">,浏览器没有这个名字的字形,前端图标位置
空白。
根因:aksrt_icon_cover_card() 与 aksrt_icon_card() 只实现了 FA 类名一条
路径,未走全站统一渲染器 aksrt_icon_markup();函数内那条用于跳过前缀拼接的
判断用的是 aksrtsvg-(任何选择器都不会产生的废弃前缀),形同虚设。
- 新增 aksrt_card_icon_inner() 统一解析器,横版 / 竖版卡片均委派给它,
FA5 类名、zibsvg- 内置图标、customsvg- 内联 SVG 三种格式统一渲染
- aksrt_icon_card() 的 icon 值改用 aksrt_sanitize_icon_value(),
原 sanitize_text_field 会把 customsvg-<svg> 的标签整段剥成裸前缀
- SchemaProvider::sanitize_field_value() 补 type === 'icon' 分支:
分组 / 重复器内的图标子字段原先落到 sanitize_text_field,
header_slider_card_option.cards[].icon 的 customsvg- 在保存时即被剥空
- PageConfigMetaBox::sanitize_card_options() 同步改用图标净化
- aksrt_svg_kses_tags() 补齐 circle / ellipse / rect / polygon / line,
与选择器端 cleanSvg() 的接受范围对齐;原先粘贴以 <circle> 为主的图标
会在 kses 阶段被静默剥离形状
- icon-card-contract 新增 3 项契约
内置 SVG 的 sprite 由 svg-icon.js 每页注入 body,无需额外入队。
未写数据迁移;已存量的 zibsvg- / FA 值无需转换,customsvg- 存量值本就被
旧净化逻辑破坏,不在此次范围内。
验证:node --test tests/widget-system/*.test.cjs 311 项全部通过(原 308 +
新增 3);php -l 4 个改动文件通过;隔离 PHP 探针覆盖 9 种取值并走完整
「保存净化 → 前端渲染」链路,修复前 / 后输出逐项对比。
2026-09-18 20:05:14 +08:00
..
2026-09-16 14:12:40 +08:00
2026-09-18 12:25:18 +08:00
2026-09-03 12:44:31 +08:00
2026-09-18 12:31:38 +08:00
2026-09-06 12:59:44 +08:00
2026-09-02 13:03:24 +08:00
2026-09-03 13:59:07 +08:00
2026-09-02 13:03:24 +08:00
2026-09-18 18:38:07 +08:00
2026-08-29 15:50:04 +08:00
2026-08-30 20:38:25 +08:00
2026-09-04 19:52:56 +08:00
2026-09-03 12:44:31 +08:00
2026-09-13 20:02:56 +08:00
2026-09-16 19:18:28 +08:00
2026-09-04 22:53:33 +08:00
2026-09-05 23:41:12 +08:00
2026-09-05 17:32:18 +08:00
2026-09-18 20:05:14 +08:00
2026-09-06 16:38:42 +08:00
2026-09-05 22:28:19 +08:00
2026-08-25 18:42:23 +08:00
2026-08-25 18:22:30 +08:00
2026-08-25 18:11:26 +08:00
2026-08-25 18:34:17 +08:00
2026-09-03 12:44:31 +08:00
2026-09-02 13:03:24 +08:00
2026-09-18 17:34:00 +08:00
2026-09-16 17:24:22 +08:00
2026-09-05 11:28:00 +08:00
2026-08-25 06:58:09 +08:00
2026-09-18 19:01:19 +08:00
2026-09-05 21:50:40 +08:00
2026-09-16 17:24:22 +08:00
2026-09-04 22:53:33 +08:00
2026-09-06 11:26:21 +08:00
2026-09-18 20:05:05 +08:00
2026-09-17 19:04:47 +08:00
2026-08-23 22:09:12 +08:00
2026-09-03 21:33:30 +08:00
2026-09-03 21:33:30 +08:00
2026-08-25 06:41:57 +08:00
2026-09-14 12:53:20 +08:00
2026-09-18 20:05:05 +08:00
2026-09-06 12:59:44 +08:00