¡La configuración de complementos dependientes es ... INCREÍBLE!

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