Vaya… esto es realmente 
Permíteme ilustrarlo.
Aquí hay un selector en la última versión de Chatbot, fíjate que está en estado “desactivado”:
Ahora cambiemos esa selección:
y aparecen como por arte de
configuraciones que solo deben considerarse cuando se selecciona ese valor.
Esta es una forma fantástica de reducir el desorden innecesario en la configuración de los complementos y hacer que la configuración sea más sencilla con menos carga cognitiva 

12 Me gusta
se cae la mandíbula He estado esperando algo así durante un tiempo realmenteee largo. se apresura a revisar el repositorio ¿Hay alguna documentación al respecto?
1 me gusta
No dudes en usar Chatbot como un ejemplo útil de su uso:
y estoy seguro de que ya hay un montón de usos en el núcleo …
2 Me gusta
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.
4 Me gusta