需求 A —— 主题设置里选「代码配色」时能当场看到效果: - 新增 assets/css/highlight-admin.css:只负责预览区布局,不改代码块外观 - 新增 assets/js/highlight-admin.js:监听下拉框,删旧 link 再插新 link, 回调里重新上色 - inc/theme-highlight.php:新增 yang_hl_admin_assets()/yang_hl_admin_preview_html() - inc/theme-options.php:在配色下拉框后插入 type=info 的预览面板 几个关键取舍(都有实测依据): - 切换配色必须真正删掉旧 <link>。20 套配色的规则是裸选择器 (.hljs-keyword 之类),同场会互相压制,切换看起来像「没反应」。 - 预览复用前台同一份 CSS,另写一套必然与前台不一致。 - 不用 highlightElement(会在已上色元素上再套一层,颜色变脏), 改为从 textContent 取原文重新 highlight。 - 实测 hljs 的 HTML 转义无损(392 字符逐字符可还原),所以不需要额外的 data-raw 暂存;那是两份状态,不同步就是 bug 源头。已删该冗余。 需求 B —— 全站代码块语言标注统一(数据侧,不在本次 diff 里): - 284 块 / 71 篇全部统一为 <pre lang="xxx">,清掉 Enlighter 私有标记与 code 上的 language-* 类 - 关键发现:站内没有「完全无标注」的块(0 个),但有 87 块标注无效 (text 47 / generic 28 / raw 8 / jsp 2 / latex 2)—— 问题不是没标,是标是假的 - 87 块逐块判定:bash 174、plaintext 45、yaml 13、ini 9、xml 8、python 8、 javascript 7、php 6、json 5、java 5、ruby 2、sql 2 - 判定表优先级必须高于「沿用旧标注」:产品把 generic/raw/text 兜底成 plaintext,而 plaintext 在白名单里,旧逻辑会走 keep 把判定表整批丢弃 (第一版实测 87 条只有 4 条生效,且结果看起来是成功的) - 同一篇文章里有 11 对块原文完全相同,str_replace 会全局替换导致整片标错; 改为按文内序号 + 内容签名定位 验证: - 后台预览 jsdom 测试 22/0,反向注入 6 组全部真红 - 语言/属性单测 44/0 与 24/0,语言反向 10/0 - 独立审计脚本(另一套扫描逻辑)全绿;反向 3/3 真红 (去掉 lang / 改成 cobol / 塞回 enlighter 各自都能抓出来) - 真实页面 4 篇:data-guess 全为 0,正文里已无「猜出来的」代码块
14 lines
609 B
CSS
14 lines
609 B
CSS
/*
|
|
Theme Name: Kratos_Yang
|
|
Text Domain: kratos_Yang
|
|
Version: 3.2.44
|
|
Requires PHP: 7.0
|
|
Description: 这是一个Kratos主题的分支版本,用来增加一些定制化功能。
|
|
Tags: 博客, 双栏, 响应式, 自定义背景, 自定义颜色, 自定义图标, 自定义菜单, 特色图像, 收录优化, 邮件中心, 主题选项, 小工具, 文章置顶, 无障碍友好
|
|
Author: Yongquan Yang
|
|
Author URI: https://yangyq.net
|
|
Theme URI: https://code.yangyq.net/laoyang/wordpress-kratos-yang
|
|
License: MIT License
|
|
License URI: https://code.yangyq.net/laoyang/wordpress-kratos-yang/src/branch/main/LICENSE
|
|
*/
|