From 71f8a733f568fed1a7592cd1dfe26c3dcfd7b87a Mon Sep 17 00:00:00 2001 From: laoyang Date: Sun, 25 Oct 2026 14:36:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E6=8A=8A=E3=80=8C=E6=AD=A3?= =?UTF-8?q?=E6=96=87=E7=9B=AE=E5=BD=95=E3=80=8D=E5=92=8C=E3=80=8C=E6=B5=AE?= =?UTF-8?q?=E5=8A=A8=E7=9B=AE=E5=BD=95=E3=80=8D=E5=88=86=E6=88=90=E4=B8=A4?= =?UTF-8?q?=E5=9D=97=EF=BC=88#1=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 浮动目录本来就没有手动/自动之分:它不读正文,没有地方写 [TOC], 要么显示要么不显示。代码层面早已如此(rail 只由 float 决定), 真正的问题是后台十项排成一列,「添加方式」「自动插入位置」跟在 浮动选项后面,看着像两种目录共用的设置。 - 新增三个 info 类型分组小标题:正文里的目录 / 浮动目录 / 两份目录共用的设置。用 info 而不是 heading —— heading 会另起 标签页,info 只渲染成一行 h4 + 说明,不进标签页菜单、不生成表单字段。 - 选项按归属重新分段:正文段(toc_inline / inline_align / mode / anchor)、浮动段(toc_float / float_side)、共用段(default / title / levels / numbering)。顺序变了,但选项 id 与存库键不变。 - 「添加方式」说明收窄为只管正文那一份;「浮动显示」说明补上 「它没有手动/自动之分」;「自动插入位置」清掉过时的 「目录位置 = 正文中间」字样。 - 顺带修掉「自动插入位置」控件被定义两遍(后台会渲染两个同名下拉)。 验证:guard330 63/0、其 falsify 15/15(新增 V37~V41 守三段归属)、 admin330_tab_check 88/0(新增分组几何判据)、其 falsify 16/16、 toc 逻辑 101/0 与 53/0、rail 几何 73/0、inline 几何 23/0、 包校验 69/0、其 falsify 13/13。 前台零变化:本次只动后台分组与文案,未改任何渲染逻辑。 --- inc/theme-options.php | 55 ++++++++++++++++++++++++++++++++++--------- style.css | 2 +- 2 files changed, 45 insertions(+), 12 deletions(-) diff --git a/inc/theme-options.php b/inc/theme-options.php index 6175fde..ce101c2 100644 --- a/inc/theme-options.php +++ b/inc/theme-options.php @@ -396,6 +396,25 @@ function kratos_options() 'type' => 'heading', ); + /* ── 分组标题:正文里的那一份 ────────────────────────────── + * + * 用 info 类型而不是 heading:heading 会另起一个标签页 + * (framework 里 `case "heading"` 会 $counter++ 并新建 + * #options-group-N),info 只渲染成一行

+ 说明文字, + * 既不进标签页菜单,也不生成表单字段(见 + * class-options-interface.php 的 :24 / :59 / :91)。 + * + * 加这两条小标题的原因:浮动目录和正文目录是两件互不相干的事, + * 但原来的选项排成一长列,「添加方式」「自动插入位置」跟在 + * 「浮动显示」后面,看着像是两种目录共用的设置,容易让人以为 + * 浮动目录也分手动/自动。 */ + $options[] = array( + 'name' => __('正文里的目录', 'kratos'), + 'desc' => __('下面这几项只影响正文流里那一份目录 —— 它跟着文章一起排版,会占正文位置。', 'kratos'), + 'id' => 'toc_group_inline', + 'type' => 'info', + ); + $options[] = array( 'name' => __('在正文中显示', 'kratos'), 'desc' => __('勾选后,在文章正文里插一份目录。
它和下面的「浮动显示」互不影响:两个都勾就同时出现两份(正文一份、边上浮一份),只勾一个就只出现一种。', 'kratos'), @@ -416,9 +435,21 @@ function kratos_options() ), ); + $options[] = array( + 'name' => __('添加方式', 'kratos'), + 'desc' => __('手动:不自动加,只有正文里手写了 [TOC] 的地方才显示(老文章的行为,升级后不会突然多出目录)。
自动:由主题自己在「自动插入位置」处加一份,不用改任何文章。
本项只管正文里的那一份;浮动目录不受它影响(浮动目录没有地方写 [TOC],勾了就一直在)。', 'kratos'), + 'id' => 'toc_mode', + 'std' => 'manual', + 'type' => 'select', + 'options' => array( + 'manual' => __('手动(只在写 [TOC] 的地方显示)', 'kratos'), + 'auto' => __('自动添加', 'kratos'), + ), + ); + $options[] = array( 'name' => __('自动插入位置', 'kratos'), - 'desc' => __('只在「添加方式 = 自动」且勾选了「在正文中显示」时起作用。
第一个标题之前取正文里最先出现的 h1 或 h2 —— 文章大标题在正文之外,不会被算进去;一个 h1/h2 都没有时退回插在文章开头。', 'kratos'), + 'desc' => __('只在「添加方式 = 自动」且勾选了「在正文中显示」时起作用;手动方式下插入点由你自己写的 [TOC] 决定。
第一个标题之前取正文里最先出现的 h1 或 h2 —— 文章大标题在正文之外,不会被算进去;一个 h1/h2 都没有时退回插在文章开头。', 'kratos'), 'id' => 'toc_anchor', 'std' => 'first', 'type' => 'select', @@ -429,9 +460,16 @@ function kratos_options() ), ); + $options[] = array( + 'name' => __('浮动目录', 'kratos'), + 'desc' => __('下面两项只影响浮在页面边上那一份 —— 它不占正文位置,和正文里的目录互不相干。', 'kratos'), + 'id' => 'toc_group_float', + 'type' => 'info', + ); + $options[] = array( 'name' => __('浮动显示', 'kratos'), - 'desc' => __('勾选后,目录变成贴在页面边缘的浮动面板,点边上的小标签滑出,不占正文位置。窄屏(手机)上是从边缘滑出的抽屉,不会挤占正文。
与「在正文中显示」互相独立,可以同时勾选。', 'kratos'), + 'desc' => __('勾选后,目录变成贴在页面边缘的浮动面板,点边上的小标签滑出,不占正文位置。窄屏(手机)上是从边缘滑出的抽屉,不会挤占正文。
与「在正文中显示」互相独立,可以同时勾选。它没有手动/自动之分:勾了就一直在,不勾就不出现。', 'kratos'), 'id' => 'toc_float', 'std' => '', 'type' => 'checkbox', @@ -450,15 +488,10 @@ function kratos_options() ); $options[] = array( - 'name' => __('添加方式', 'kratos'), - 'desc' => __('手动:不自动加,只有正文里手写了 [TOC] 的地方才显示(老文章的行为,升级后不会突然多出目录)。
自动:由主题自己加,不用改任何文章。', 'kratos'), - 'id' => 'toc_mode', - 'std' => 'manual', - 'type' => 'select', - 'options' => array( - 'manual' => __('手动(只在写 [TOC] 的地方显示)', 'kratos'), - 'auto' => __('自动添加', 'kratos'), - ), + 'name' => __('两份目录共用的设置', 'kratos'), + 'desc' => __('下面几项对正文里和浮动的那一份同时生效。', 'kratos'), + 'id' => 'toc_group_common', + 'type' => 'info', ); $options[] = array( diff --git a/style.css b/style.css index b6b8d01..5a17160 100644 --- a/style.css +++ b/style.css @@ -1,7 +1,7 @@ /* Theme Name: Kratos_Yang Text Domain: kratos_Yang -Version: 3.2.31 +Version: 3.2.32 Requires PHP: 7.0 Description: 这是一个Kratos主题的分支版本,用来增加一些定制化功能。 Tags: 博客, 双栏, 响应式, 自定义背景, 自定义颜色, 自定义图标, 自定义菜单, 特色图像, 收录优化, 邮件中心, 主题选项, 小工具, 文章置顶, 无障碍友好