Einstellungen für abhängige Plugins sind ... WUNDERBAR!

Es gibt Dokumentation, aber diese ist derzeit, soweit ich weiß, fragmentiert und nicht als eigenständiger Entwicklerleitfaden aufbereitet.

Die wichtigsten autoritativen Referenzen sind:

  • Schemadokumentation in config/site_settings.yml:52, die depends_on, depends_on_values, depends_behavior und dependent_setting_display behandelt.

  • Detailliertere Anleitungen und Beispiele in .skills/discourse-site-settings/SKILL.md:203.

  • Spezifikationen für das Backend-Verhalten in spec/lib/site_setting_extension_spec.rb:706.

  • Frontend-Auflösung von Abhängigkeiten in frontend/discourse/admin/services/admin-site-setting-store.js:41.

  • UI-Beispiele in frontend/discourse/tests/acceptance/admin-site-settings-test.js:142.

Die grundlegende Syntax lautet:

child_setting:
  default: ""
  depends_on:
     - parent_setting
  depends_behavior: "hidden"

Für Enum- oder String-Elterneinstellungen:

 child_setting:
    default: ""
    depends_on:
      - parent_setting
    depends_on_values:
      parent_setting:
        - enabled_mode
        - another_mode
    depends_behavior: "hidden"
    dependent_setting_display: "inline"

Eine wichtige Einschränkung: Abhängigkeiten können mehrere direkte Elterneinstellungen enthalten, aber die Auflösung der Abhängigkeiten ist nicht transitiv. Eine verschachtelte Kette wie A → B → C führt nicht automatisch dazu, dass C berücksichtigt, ob B selbst durch A ausgeblendet wird; C bewertet nur den gespeicherten Wert von B.

4 „Gefällt mir“