依赖插件设置……太棒了!

有相关文档,但据我所知,目前这些文档是零散的,而非作为独立的开发者指南呈现。

主要的权威参考资料包括:

  • config/site_settings.yml:52 中的模式文档,涵盖 depends_ondepends_on_valuesdepends_behaviordependent_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 的存储值。

4 个赞