Skip to content

托管配置(Managed Configuration)

主题和插件共用同一套 managed 声明式配置:在 configuration 中声明 type: "managed"data 配置项数组,管理界面会自动生成表单,并按统一规则保存和输出。

  • 主题:通过 GET /api/publicdata.theme_settings 读取,见 主题开发指南
  • 插件:通过 await server.getConfig() 读取;管理端可用 admin:getPluginConfiguration,见 插件开发指南

结构

json
{
  "type": "managed",
  "name": "配置面板标题",
  "icon": "/themes/example/icon.svg",
  "data": [
    { "type": "title", "name": "分组" },
    { "key": "greeting", "name": "问候语", "type": "string", "default": "Hello" }
  ]
}

nameicon 只用于管理面板展示;data 是配置项数组。

配置项字段

字段类型必填说明
keystringtitle / textbox 外必填唯一配置键
namestring | i18n表单标签;textbox 使用该项直接渲染 HTML
typestring见下方字段类型
optionsstringselect 的选项,逗号分隔
defaultany默认值
requiredboolean是否必填
helpstring | i18n帮助文本

字段类型

  • title: 分组标题,用于生成设置页导航;不应包含 keydefault
  • textbox: 纯 HTML 文本块,不保存值、不生成分组导航;只应来自可信来源。
  • string: 文本输入。
  • number: 数字输入。
  • select: 下拉选择,options 为必填。
  • switch: 布尔开关。
  • richtext: 长文本输入,适合 HTML 片段或较长配置文本。
  • nodes: 节点多选,右侧“选择节点”按钮打开选择器。
  • pingtasks: Ping 任务多选,右侧“选择 Ping 任务”按钮打开选择器。

选择器选择后会在字段下方追加一行显示已选名称,逗号分隔,最多 50 个字符,超出以 ... 结尾。

多语言文本

configuration.name、配置项的 namehelp 可以是字符串或多语言对象:

json
{
  "name": {
    "zh-CN": "背景图片 URL",
    "en": "Background Image URL"
  }
}

前端按以下顺序回退:精确匹配 → 规范化匹配(- / _ 互通,如 zh-CNzh_CN 等价)→ 基础语言(zh

默认值合并规则

已保存的值优先;未保存的键按以下规则补齐:

类型无默认值时的兜底
selectoptions 第一个选项
number0
switchfalse
nodes / pingtasks[]
其他""

对应输出:

json
{
  "selected_nodes": ["uuid-a", "uuid-b"],
  "selected_ping_tasks": [1, 2]
}

主题后台保存调用 POST /api/admin/theme/settings?theme=<short>;插件后台保存调用 admin:setPluginConfiguration。请求中的选择器字段同样保持 JSON 字符串,只有输出时才 转换为数组。

Released under the MIT license.