Всем привет,
Я потратил последние несколько часов на попытку синхронизировать тёмную тему блога Ghost с встроенным Discourse. Мне удалось успешно определить состояние тёмной темы на главном сайте и передать правильные параметры, но, похоже, Discourse игнорирует их для анонимных пользователей.
Наша конфигурация и то, что мы проверили:
Вставка параметров: Мы используем собственный скрипт в Ghost для обнаружения атрибута data-color-scheme=“dark”. Через консоль браузера и вкладку Network мы убедились, что параметры ?color_scheme_id=13 (наша палитра 13) или ?theme_id=4 (специальная тёмная тема) корректно добавляются к запросу embed.js, а затем и к src встраиваемого фрейма (Iframe).
Настройка тем: В Discourse целевая тема (ID 4) и цветовая схема (ID 13) помечены как «Доступные для выбора пользователем». Цветовая схема также установлена как «Тёмная по умолчанию» для активной темы.
Проблема: Несмотря на то, что URL встраиваемого фрейма явно содержит …/embed/comments?topic_id=…&theme_id=4, отрендеренный контент для анонимных посетителей остаётся в светлой теме (по умолчанию).
Проведённые тесты:
Жёсткая прошивка (hardcoding) параметра theme_id непосредственно в скрипте.
Ручное изменение src встраиваемого фрейма через JavaScript после завершения загрузки embed.js.
Попытка использовать @media (prefers-color-scheme: dark) внутри компонента темы для принудительного применения стилей, что также, похоже, игнорируется или переопределяется в контексте встраивания.
Мой вопрос: Существует ли какая-то конкретная настройка безопасности или жёстко заданное ограничение в логике встраивания Discourse, которое препятствует анонимным пользователям переключать темы или цветовые схемы через параметры URL?
Мы хотим избежать «мигания нестилизованного контента» (Flash of unstyled content) и гарантировать, что читатели тёмной записи блога не ослепнут из-за белого блока комментариев. Есть ли какие-либо настройки в app.yml или скрытые настройки сайта, управляющие этим поведением для встроенного контента?
Версия Discourse: 3.5.3
Заранее спасибо за любые подсказки!