Ghost / Discourse Embed / Darkmode: theme_id e color_scheme_id ignorati per utenti anonimi

Ciao a tutti,

Ho passato le ultime ore a cercare di sincronizzare la Modalità Scura di un blog Ghost con un’incorporazione di Discourse. Sebbene sia riuscito a rilevare lo stato della Modalità Scura sul sito host e a passare i parametri corretti, Discourse sembra ignorarli per gli utenti anonimi.

La Nostra Configurazione e Ciò che Abbiamo Verificato:

Iniezione dei Parametri: Stiamo utilizzando uno script personalizzato in Ghost per rilevare l’attributo data-color-scheme="dark". Abbiamo verificato tramite la console del browser e la scheda Network che i parametri ?color_scheme_id=13 (la nostra Palette 13) o ?theme_id=4 (un Tema Scuro dedicato) vengano aggiunti correttamente alla richiesta di embed.js e successivamente all’origine dell’Iframe.

Configurazione del Tema: In Discourse, il Tema di destinazione (ID 4) e lo Schema Colore (ID 13) sono entrambi contrassegnati come “Selezionabili dall’utente”. Lo Schema Colore è anche impostato come “Scuro Predefinito” per il tema attivo.

Il Problema: Nonostante l’URL dell’Iframe mostri chiaramente .../embed/comments?topic_id=...&theme_id=4, il contenuto renderizzato rimane in Modalità Chiara (Predefinita) per i visitatori anonimi.

Test Eseguiti:

Codifica forzata di theme_id direttamente nello script.

Manipolazione manuale dell’origine dell’Iframe tramite JavaScript dopo il caricamento di embed.js.

Tentativo di utilizzare @media (prefers-color-scheme: dark) all’interno di un Componente Tema per forzare gli stili, che sembra anch’esso ignorato o sovrascritto nel contesto dell’incorporazione.

La Mia Domanda: Esiste un’impostazione di sicurezza specifica o una limitazione codificata nella logica di incorporazione di Discourse che impedisce agli utenti anonimi di cambiare temi o schemi colore tramite i parametri URL?

Vogliamo evitare un “Flash di contenuto non stilizzato” e assicurarci che i lettori su un post del blog scuro non vengano accecati da una sezione commenti bianca. Ci sono impostazioni di app.yml o impostazioni del sito nascoste che regolano questo comportamento per i contenuti incorporati?

Versione di Discourse: Discourse 3.5.3

Grazie in anticipo per qualsiasi informazione!