From 5c7a9e2c1cc3ad8bc8fbcab6602d87aedf331d3a Mon Sep 17 00:00:00 2001 From: laoyang Date: Sun, 25 Oct 2026 19:18:21 +0800 Subject: [PATCH] =?UTF-8?q?3.2.37=20=E6=8A=8A=E3=80=8C=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=A4=B4=E5=83=8F=E3=80=8D=E6=8F=90=E6=88=90=E7=8B=AC=E7=AB=8B?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E9=A1=B5=EF=BC=8C=E6=8E=92=E5=9C=A8=E5=85=A8?= =?UTF-8?q?=E7=AB=99=E9=85=8D=E7=BD=AE=E4=B9=8B=E5=90=8E=20#6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 3.2.36 上线后反馈「后台主题设置没有看到头像这个选项」。逐项排查确认 功能是好的:服务器文件已更新(style.css 3.2.36、theme-options.php md5 与本地一致、avatar-styles 14 份齐全),真实后台 HTML 里 a_auto_enable 出现 5 次、of-avatar-style 97 次,CSS/JS 全部下发,无头浏览器点开开关 后 14 张卡片、14 个单选、缩略图全部出图。 真正的原因是位置:它排在「全站配置」的第 9 项,纵坐标 1058px,而浏览器 视口 1000px 高,前面 8 项(其中「404 页面图片」一项就占 301px)把它顶到 首屏之外,不往下滚看不见;左侧 12 个标签页也没有任何「头像」字样,光扫 标签栏同样摸不着。 改动: - 把两个选项从「全站配置」里搬出来,改成独立 heading 分组,插在 「全站配置」之后、「顶部导航」之前,成为第 2 个标签页 - 开关显示名从「自动头像」改为「启用自动头像」,避免与标签页同名、 「勾选上面的自动头像」这类指代说不清 - 分组注释序号全部重排为 1..13 连续 现在标签栏第 2 个就是「自动头像」,进去第一项就是开关(组内前面 0 个 控件,纵坐标 134px)。 theme-avatar.php 一行没动:它的显隐 CSS 与 JS 全部按 section id 定位 (#section-a_auto_style / getElementById('a_auto_enable')),不依赖分组 序号,搬位置不受影响。 验证: - 分组结构 17/0、几何+交互 29/0(视口 1600x1000,正是上一版把它顶出 首屏的高度) - 几何反向 6 项被捕获(主判据用「开关是所在分组第 1 项」,与像素无关) - 源码守卫 20/0,反向 12/12 全部被捕获 - 包内契约 30/0,反向 8/8 全部被捕获 - 逐字节渲染 84/0,无 mbstring(php -n)84/0 - 严格错误级别下 PHP 8.4.25 与 8.5.12(线上同版)各 43/0 - 回归:后台标签 88/0、3.2.36 头像守卫 55/0、3.2.36 包契约 24/0、 CDN 56/0 与 77/0、3.2.28 13/0 - 89 个 php 文件 php -l 全通过 --- inc/theme-options.php | 96 +++++++++++++++++++++++++------------------ style.css | 2 +- 2 files changed, 56 insertions(+), 42 deletions(-) diff --git a/inc/theme-options.php b/inc/theme-options.php index a302d95..d900c39 100644 --- a/inc/theme-options.php +++ b/inc/theme-options.php @@ -235,38 +235,6 @@ function kratos_options() 'type' => 'checkbox', ); - /* ── 自动头像 ──────────────────────────────────────────────── - * - * 总开关与风格选择拆成两个字段,但**风格列表只在开关打开后才显示**。 - * 这是用户明确要求的形式:先勾选,再出现列表。 - * - * 为什么不是一个字段直接存风格名(留空=关闭): - * 用户「关闭功能」和「还没选过风格」在库里会变成同一种状态(都空), - * 以后想恢复默认值时就分不清该填什么。两个字段各管一件事更清楚。 - * - * ⚠️ std 只在后台预填和「恢复默认」时起作用,运行时 kratos_option() - * 完全不看它。所以运行时默认值必须在这里同步给一份: - * 开关默认关('0'),风格默认 lorelei(见 yang_avatar_style())。 - */ - $options[] = array( - 'name' => __('自动头像', 'kratos'), - 'desc' => __('访客没注册、也没上传头像时,按他的邮箱生成一张头像。全程本地生成,不请求任何外部服务,同一个邮箱永远得到同一张。若访客已经上传过真实头像,不受影响。', 'kratos'), - 'std' => '0', - 'id' => 'a_auto_enable', - 'type' => 'checkbox', - ); - - $options[] = array( - 'name' => __('头像风格', 'kratos'), - 'desc' => __('勾选上面的「自动头像」后,这里才会出现风格列表。所有风格都是 CC0 或 MIT 许可,可自由使用与商用。点一下即时预览,保存后生效。', 'kratos'), - 'std' => 'lorelei', - 'id' => 'a_auto_style', - 'type' => 'avatar_style', - /* 只有开关打开时才渲染这个控件;关着的时候后台完全看不到它, - 避免用户在关闭状态下改了风格却不知道为什么没生效。 */ - 'requires' => 'a_auto_enable', - ); - $options[] = array( 'name' => __('禁止生成缩略图', 'kratos'), 'desc' => __('上传图片时不再额外生成多种尺寸的副本,节省磁盘空间', 'kratos'), @@ -284,7 +252,53 @@ function kratos_options() ); /* ══════════════════════════════════════════════════════════ - * 二、顶部导航 —— 页头那一条 + * 二、自动头像 —— 独立一块 + * + * 3.2.36 里这两项原本塞在「全站配置」内部(Gravatar 加速之后)。 + * 上线后发现**根本找不到**:它排在第 9 位,纵坐标 1058px,而 + * 浏览器视口才 1000px 高 —— 前 8 项(其中「404 页面图片」一项 + * 就占 301px)把它顶到首屏之外,不往下滚看不见。左侧标签栏也没 + * 有「头像」字样,光扫标签栏同样摸不着。 + * + * 所以提成独立标签页:标签栏直接能看见,进去第一项就是开关。 + * 这也更贴合原始需求「最上面的一个复选框,勾完之后出现下面这些 + * 列表」——独立成页后,这个「上面/下面」的关系才真的成立。 + * + * ── 为什么开关与风格拆成两个字段 ────────────────────────── + * 若用一个字段直接存风格名(留空=关闭),用户「主动关闭」和 + * 「还没选过风格」在库里会变成同一种状态(都空),以后想恢复 + * 默认值时分不清该填什么。两个字段各管一件事更清楚。 + * + * ⚠️ std 只在后台预填和「恢复默认」时起作用,运行时 kratos_option() + * 完全不看它。所以运行时默认值必须同步给一份: + * 开关默认关('0'),风格默认 lorelei(见 yang_avatar_style())。 + * ══════════════════════════════════════════════════════════ */ + $options[] = array( + 'name' => __('自动头像', 'kratos'), + 'type' => 'heading', + ); + + $options[] = array( + 'name' => __('启用自动头像', 'kratos'), + 'desc' => __('访客没注册、也没上传头像时,按他的邮箱生成一张头像。全程本地生成,不请求任何外部服务,同一个邮箱永远得到同一张。若访客已经上传过真实头像,不受影响。', 'kratos'), + 'std' => '0', + 'id' => 'a_auto_enable', + 'type' => 'checkbox', + ); + + $options[] = array( + 'name' => __('头像风格', 'kratos'), + 'desc' => __('勾选上面的「启用自动头像」后,这里才会出现风格列表。所有风格都是 CC0 或 MIT 许可,可自由使用与商用。点一下即时预览,保存后生效。', 'kratos'), + 'std' => 'lorelei', + 'id' => 'a_auto_style', + 'type' => 'avatar_style', + /* 只有开关打开时才显示这个控件;关着的时候看不到它, + 避免用户在关闭状态下改了风格却不知道为什么没生效。 */ + 'requires' => 'a_auto_enable', + ); + + /* ══════════════════════════════════════════════════════════ + * 三、顶部导航 —— 页头那一条 * ══════════════════════════════════════════════════════════ */ $options[] = array( 'name' => __('顶部导航', 'kratos'), @@ -336,7 +350,7 @@ function kratos_options() ); /* ══════════════════════════════════════════════════════════ - * 三、首页配置 —— 只管首页列表长什么样 + * 四、首页配置 —— 只管首页列表长什么样 * ══════════════════════════════════════════════════════════ */ $options[] = array( 'name' => __('首页配置', 'kratos'), @@ -369,7 +383,7 @@ function kratos_options() ); /* ══════════════════════════════════════════════════════════ - * 四、文章配置 —— 打开单篇文章才看得到的东西 + * 五、文章配置 —— 打开单篇文章才看得到的东西 * ══════════════════════════════════════════════════════════ */ $options[] = array( 'name' => __('文章配置', 'kratos'), @@ -413,7 +427,7 @@ function kratos_options() ); /* ══════════════════════════════════════════════════════════ - * 五、自动目录 —— 把长文切成能跳的章节 + * 六、自动目录 —— 把长文切成能跳的章节 * * 与「文章配置」分开成独立标签页,是刻意的:目录的选项有六项, * 塞进文章配置里会把「页面布局 / 打赏」这些一眼要看到的东西挤下去。 @@ -569,7 +583,7 @@ function kratos_options() ); /* ══════════════════════════════════════════════════════════ - * 六、站长信息 —— 文章页页脚那张名片 + * 七、站长信息 —— 文章页页脚那张名片 * ══════════════════════════════════════════════════════════ */ $options[] = array( 'name' => __('站长信息', 'kratos'), @@ -599,7 +613,7 @@ function kratos_options() ); /* ══════════════════════════════════════════════════════════ - * 七、页脚配置 —— 页面最底下那几行 + * 八、页脚配置 —— 页面最底下那几行 * ══════════════════════════════════════════════════════════ */ $options[] = array( 'name' => __('页脚配置', 'kratos'), @@ -653,7 +667,7 @@ function kratos_options() ); /* ══════════════════════════════════════════════════════════ - * 八、哀悼模式 —— 整站级功能,与首页无关 + * 九、哀悼模式 —— 整站级功能,与首页无关 * * 这一组原来错放在「首页配置」下面。它影响的是整站配色 * (首页、文章页、说明页都变黑白),放首页下面会让人以为 @@ -748,7 +762,7 @@ function kratos_options() ); /* ══════════════════════════════════════════════════════════ - * 九、收录与统计 —— 给搜索引擎看的 + * 十、收录与统计 —— 给搜索引擎看的 * ══════════════════════════════════════════════════════════ */ $options[] = array( 'name' => __('收录与统计', 'kratos'), @@ -806,7 +820,7 @@ function kratos_options() ); /* ══════════════════════════════════════════════════════════ - * 十、邮件通知 —— SMTP 与评论提醒 + * 十一、邮件通知 —— SMTP 与评论提醒 * ══════════════════════════════════════════════════════════ */ $options[] = array( 'name' => __('邮件通知', 'kratos'), diff --git a/style.css b/style.css index e75ce94..3754531 100644 --- a/style.css +++ b/style.css @@ -1,7 +1,7 @@ /* Theme Name: Kratos_Yang Text Domain: kratos_Yang -Version: 3.2.36 +Version: 3.2.37 Requires PHP: 7.0 Description: 这是一个Kratos主题的分支版本,用来增加一些定制化功能。 Tags: 博客, 双栏, 响应式, 自定义背景, 自定义颜色, 自定义图标, 自定义菜单, 特色图像, 收录优化, 邮件中心, 主题选项, 小工具, 文章置顶, 无障碍友好