Ghost / Discourse Embed / Darkmode: theme_id und color_scheme_id für anonyme Benutzer ignoriert

Hallo zusammen,

ich habe die letzten Stunden damit verbracht, den Dunkelmodus eines Ghost-Blogs mit einer Discourse-Einbettung zu synchronisieren. Obwohl es mir gelungen ist, den Dunkelmodus auf der Host-Seite zu erkennen und die korrekten Parameter zu übergeben, scheint Discourse diese für anonyme Benutzer zu ignorieren.

Unser Setup und was wir überprüft haben:

Parameter-Injektion: Wir verwenden ein benutzerdefiniertes Skript in Ghost, um das Attribut data-color-scheme="dark" zu erkennen. Wir haben über die Browserkonsole und die Netzwerk-Registerkarte überprüft, dass die Parameter ?color_scheme_id=13 (unsere Palette 13) oder ?theme_id=4 (ein dediziertes dunkles Theme) korrekt an die embed.js-Anfrage und anschließend an die Iframe-Quelle angehängt werden.

Theme-Konfiguration: In Discourse sind das Ziel-Theme (ID 4) und das Farbschema (ID 13) beide als „Benutzerwählbar“ markiert. Das Farbschema ist auch als „Standard Dunkel“ für das aktive Theme eingestellt.

Das Problem: Obwohl die Iframe-URL deutlich .../embed/comments?topic_id=...&theme_id=4 anzeigt, wird der gerenderte Inhalt für anonyme Besucher weiterhin im hellen Modus (Standard) angezeigt.

Durchgeführte Tests:

Das Theme-ID direkt in das Skript hartkodieren.
Die Iframe-Quelle nach dem Laden von embed.js manuell über JavaScript manipulieren.
Versuchen, @media (prefers-color-scheme: dark) innerhalb einer Theme-Komponente zu verwenden, um Stile zu erzwingen, was im Einbettungskontext ebenfalls ignoriert oder überschrieben zu werden scheint.

Meine Frage: Gibt es eine bestimmte Sicherheitseinstellung oder eine hartkodierte Beschränkung in der Discourse-Einbettungslogik, die anonymen Benutzern das Umschalten von Themes oder Farbschemata über URL-Parameter untersagt?

Wir möchten ein „Aufblitzen von ungestyltem Inhalt“ vermeiden und sicherstellen, dass Leser auf einem dunklen Blogbeitrag nicht von einem weißen Kommentarbereich geblendet werden. Gibt es app.yml-Einstellungen oder versteckte Site-Einstellungen, die dieses Verhalten für eingebettete Inhalte steuern?

Discourse-Version: Discourse 3.5.3

Vielen Dank im Voraus für alle Hinweise!