噢……这真的 ![]()
让我来展示一下。
这是最新版 Chatbot 中的一个选择器,注意它处于“关闭”状态:
现在让我们更改这个选择:
就像
魔法一样,它揭示了只有在该值被选中时才需要考虑的设置。
这是一种非常 棒 的方式,可以减少插件设置中不必要的杂乱,让配置变得更简单,降低认知负担 ![]()

噢……这真的 ![]()
让我来展示一下。
这是最新版 Chatbot 中的一个选择器,注意它处于“关闭”状态:
现在让我们更改这个选择:
就像
魔法一样,它揭示了只有在该值被选中时才需要考虑的设置。
这是一种非常 棒 的方式,可以减少插件设置中不必要的杂乱,让配置变得更简单,降低认知负担 ![]()

下巴掉地上 我盼这种东西已经非常非常久了。赶紧去查仓库 有相关的文档吗?
请随意参考 Chatbot 的使用,作为一个大致有帮助的示例:
而且我敢肯定,现在核心代码中肯定有很多类似的用法……
有相关文档,但据我所知,目前这些文档是零散的,而非作为独立的开发者指南呈现。
主要的权威参考资料包括:
config/site_settings.yml:52 中的模式文档,涵盖 depends_on、depends_on_values、depends_behavior 和 dependent_setting_display。
.skills/discourse-site-settings/SKILL.md:203 中更详细的指南和示例。
spec/lib/site_setting_extension_spec.rb:706 中的后端行为规范。
frontend/discourse/admin/services/admin-site-setting-store.js:41 中的前端依赖解析。
frontend/discourse/tests/acceptance/admin-site-settings-test.js:142 中的 UI 示例。
基本语法如下:
child_setting:
default: ""
depends_on:
- parent_setting
depends_behavior: "hidden"
对于枚举或字符串类型的父设置:
child_setting:
default: ""
depends_on:
- parent_setting
depends_on_values:
parent_setting:
- enabled_mode
- another_mode
depends_behavior: "hidden"
dependent_setting_display: "inline"
一个重要限制:依赖项可以包含多个直接父项,但依赖解析不具有传递性。例如 A → B → C 这样的嵌套链并不会自动让 C 去判断 B 是否被 A 隐藏;C 仅评估 B 的存储值。