Oh … c’est vraiment 
Laissez-moi vous illustrer cela.
Voici un sélecteur dans la dernière version de Chatbot, remarquez qu’il est en état « désactivé » :
Maintenant, modifions cette sélection :
et il révèle, comme par
, des paramètres qui n’ont besoin d’être pris en compte que lorsque cette valeur est sélectionnée.
C’est une façon vraiment fantastique de réduire le désordre inutile dans les paramètres des plugins et de simplifier la configuration avec moins de charge cognitive 

12 « J'aime »
la mâchoire se décroche J’attendais quelque chose comme ça depuis bien loooongtemps. se précipite pour vérifier le dépôt Y a-t-il de la documentation à ce sujet ?
1 « J'aime »
N’hésitez pas à utiliser l’exemple de Chatbot comme illustration utile de son utilisation :
et je suis sûr qu’il y a maintenant une foule d’utilisations dans le noyau…
2 « J'aime »
Une documentation existe, mais elle est actuellement, à ma connaissance, fragmentée plutôt que présentée sous la forme d’un guide développeur autonome.
Les références principales et autorisées sont :
-
La documentation du schéma dans config/site_settings.yml:52, couvrant depends_on, depends_on_values, depends_behavior et dependent_setting_display.
-
Des directives et exemples plus détaillés dans .skills/discourse-site-settings/SKILL.md:203.
-
Les spécifications du comportement backend dans spec/lib/site_setting_extension_spec.rb:706.
-
La résolution des dépendances frontend dans frontend/discourse/admin/services/admin-site-setting-store.js:41.
-
Des exemples d’interface utilisateur dans frontend/discourse/tests/acceptance/admin-site-settings-test.js:142.
La syntaxe de base est :
child_setting:
default: ""
depends_on:
- parent_setting
depends_behavior: "hidden"
Pour les parents de type enum ou string :
child_setting:
default: ""
depends_on:
- parent_setting
depends_on_values:
parent_setting:
- enabled_mode
- another_mode
depends_behavior: "hidden"
dependent_setting_display: "inline"
Une limitation importante : les dépendances peuvent contenir plusieurs parents directs, mais la résolution des dépendances n’est pas transitive. Une chaîne imbriquée telle que A → B → C ne conduit pas automatiquement C à prendre en compte le fait que B est lui-même masqué par A ; C évalue uniquement la valeur stockée de B.
4 « J'aime »