Existe documentación, pero actualmente está, por lo que yo sé, fragmentada en lugar de presentarse como una guía independiente para desarrolladores.
Las referencias autoritativas principales son:
-
Documentación del esquema en config/site_settings.yml:52, que cubre depends_on, depends_on_values, depends_behavior y dependent_setting_display.
-
Orientación y ejemplos más detallados en .skills/discourse-site-settings/SKILL.md:203.
-
Especificaciones de comportamiento del backend en spec/lib/site_setting_extension_spec.rb:706.
-
Resolución de dependencias del frontend en frontend/discourse/admin/services/admin-site-setting-store.js:41.
-
Ejemplos de interfaz de usuario en frontend/discourse/tests/acceptance/admin-site-settings-test.js:142.
La sintaxis básica es:
child_setting:
default: ""
depends_on:
- parent_setting
depends_behavior: "hidden"
Para padres de tipo enum o string:
child_setting:
default: ""
depends_on:
- parent_setting
depends_on_values:
parent_setting:
- enabled_mode
- another_mode
depends_behavior: "hidden"
dependent_setting_display: "inline"
Una limitación importante: las dependencias pueden contener múltiples padres directos, pero la resolución de dependencias no es transitiva. Una cadena anidada como A → B → C no hace que C tenga en cuenta automáticamente si B está oculto por A; C solo evalúa el valor almacenado de B.