帮助首页 > 网站更新修复说明 · 主题与界面修复 > 主题默认黑字与极简白色删除报告

主题默认黑字与极简白色删除报告

默认主题「有底黑字」与删除极简白色 — 实现报告

一、需求摘要

  1. 删除「极简白色」主题:后台不再提供该选项,避免与默认主题混淆。
  2. 默认主题特殊规则:有底色的区域使用默认主题色作为底色,字体一律黑色(仅默认主题如此)。
  3. 其他主题不变:有底色的区域仍为主题色底色 + 白色字体;无底色的区域仍为主题色字体
  4. 原则统一:有底色 → 底色=主题色,字体=白(或默认主题下=黑);无底色 → 字体=主题色。修改时不改变其他主题的功能、样式和色彩

二、实现思路(如何做到「完美更改」)

2.1 只动「一处变量 + 一处样式」

  • 变量:在 :root 中增加 --theme-on-bg-text,由 PHP 根据当前主题 key 输出:

- 当前为 default--theme-on-bg-text: #000;(黑字)

- 当前为 其他主题(blue/red/green/…/black)→ --theme-on-bg-text: #fff;(白字)

  • 样式:全站唯一主题样式文件 theme.css 中,所有「有主题底色的元素」的字体颜色由写死的 #fff 改为 var(--theme-on-bg-text, #fff),这样:

- 默认主题:读到 #000,有底处为黑字。

- 其他主题:读到 #fff,有底处仍为白字。

- 未注入变量时用回退值 #fff,不影响现有行为。

这样只通过一个 CSS 变量区分「默认=黑字 / 其他=白字」,不改其他主题的色值、功能或结构。

2.2 不动的部分(保证其他主题不受影响)

  • 主题色体系--theme-color--theme-color-hover--theme-gradient 等仍只由 getThemeColor($module) 决定,与主题 key(default/blue/red/…)一一对应,未做任何修改
  • 无底色规则:所有「无底色的文字/链接」仍使用 color: var(--theme-color)未做任何修改
  • 其他主题 key:blue、red、green、purple、orange、gray、pink、cyan、gold、black 的配色与逻辑均未改动,仅默认主题多了一个「有底用黑字」的规则。

三、已完成的代码修改

3.1 PHP:注入 --theme-on-bg-text(Banyan/Common/theme-helper.php)

  • getThemeRootVars($module) 中:

- 调用 getThemeKey($module) 得到当前主题 key(如 defaultblue)。

- 若 $theme === 'default',则 $onBgText = '#000';否则 $onBgText = '#fff'

- 在返回的 :root 字符串中追加:--theme-on-bg-text:{$onBgText};

  • getThemeColor()getThemeKey() 及主题色映射表未改,其他主题色与逻辑不变。

3.2 CSS:有底色处统一用变量(themes/default/Home/statics/css/theme.css)

  • 将所有「有主题底色的元素」上的 color: #fff !important 改为 color: var(--theme-on-bg-text, #fff) !important(包括导航、按钮、楼层标题、Tab 选中、分类选中、弹层按钮等)。
  • 将工具类 .btn-theme-primary.pc-theme-buttoncolor: #fff 改为 color: var(--theme-on-bg-text, #fff)
  • 未改动:无底色处的 color: var(--theme-color)、背景/边框使用的 var(--theme-color) 等,保证其他主题的样式和色彩不变。

3.3 后台:删除「极简白色」选项(Banyan/Backstage/template/index.html)

  • PC 端(Home)移动端(WAP) 两个下拉框中,删除 <option value="white">🤍 极简白色</option>
  • 主题预览脚本中删除对 theme === 'white' 的特殊处理,避免引用已移除的选项。
  • 预览脚本中 themeColors 移除 'white',仅用于前端预览,不影响 PHP 主题逻辑。
  • 默认主题预览增加「有底色处为黑字」的展示:当 theme === 'default' 时,预览块中的 header/button 使用 onBgText = '#000000',其余主题仍为白字,便于管理员区分默认主题行为。

四、效果与原则对照

项目默认主题其他主题(蓝/红/绿/…/黑)
有底色的底色主题色主题色
有底色的字体黑色白色
无底色的字体主题色主题色
  • 原则:有底色 → 底色=主题色,字体=白(默认主题下=黑);无底色 → 字体=主题色。
  • 其他主题:功能、样式、色彩均未改变,仅默认主题多「有底用黑字」这一条规则。

五、若需同步 Wap 端

  • Wap 端若使用同一套 getThemeRootVars('Wap') 且引用 themes/default/Wap/statics/css/theme.css,则只需在 Wap 的 theme.css 中,对「有主题底色的元素」做同样替换:color: #fffcolor: var(--theme-on-bg-text, #fff)
  • getThemeRootVars 已按 getThemeKey($module) 区分 Home/Wap,故 PC 与 Wap 可各自为 default 或其他主题,互不影响。

六、总结

  • 极简白色:已从后台选项中删除,预览与前端主题列表均不再出现。
  • 默认主题:通过新增 --theme-on-bg-text: #000 与 theme.css 中统一使用 var(--theme-on-bg-text, #fff),实现「有底色一律黑字」;其他主题仍为白字,未改变其他主题的功能、样式和色彩,实现「完美更改」。
copyright 2013-2113 www.baoanfuwu.cn All Rights Reserved 保安服务网版权所有
皖ICP备2021016109号-1