Мы добавили новый способ для разработчиков тем управлять опытом работы на сайте. Настраиваемые настройки сайта позволяют темам переопределять ограниченную группу настроек сайта, определённых ядром Discourse. ![]()
Чем настраиваемые настройки сайта отличаются от других?
У нас уже есть понятия настроек тем и модификаторов тем, так чем же настраиваемые настройки сайта отличаются? Вот краткое резюме:
- Настройки тем — это пользовательские настройки, используемые для управления интерфейсом и функциональностью внутри вашей темы или компонента, предоставляющие варианты конфигурации. Они не могут изменять основную функциональность Discourse.
- Модификаторы тем — позволяют теме или компоненту изменять выбранную функциональность серверной части ядра Discourse в качестве альтернативы созданию плагина.
Настраиваемые настройки сайта (новое) — позволяют теме (но не компонентам) переопределять небольшой поднабор основных настроек сайта, которые обычно контролируют части интерфейса и другую незначительную функциональность. Это даёт темам больший контроль над полным опытом работы на сайте.
Настраиваемые настройки сайта имеют идентичные типы данных и значения тем настройкам сайта, которые они переопределяют. По сути, значение настройки сайта в базе данных становится неактуальным, так как теперь каждая тема контролирует это значение индивидуально.
Как администраторы могут просматривать и изменять настраиваемые настройки сайта?
Администраторы могут просматривать и изменять настраиваемые настройки сайта в двух местах. Во-первых, на странице каждой отдельной темы теперь есть раздел «Настройки, которые может переопределить тема», как показано ниже, над другим разделом, отображающим настройки темы, определённые самой темой:
Точка указывает, что значение было изменено относительно значения по умолчанию для настройки сайта. Нажатие кнопки «Сброс» вернёт значение настройки темы к значению по умолчанию для настройки сайта.
Второе место, где администраторы могут просмотреть эти настройки, — новая страница /admin/config/theme-site-settings:
Отсюда администраторы могут увидеть все настраиваемые настройки сайта, значение настройки сайта по умолчанию и какие темы переопределяют это значение. При наведении курсора на название темы интерфейс покажет значение, установленное этой темой.
Что произойдёт с моими существующими изменениями настроек сайта?
Если вы изменили enable_welcome_banner или search_experience со значений по умолчанию на вашем сайте, мы автоматически перенесём эти значения во все установленные на вашем сайте темы, поэтому для ваших участников ничего в интерфейсе не изменится.
Где они определены?
Настраиваемые настройки сайта определяются в основном файле config/site_settings.yml. Каждая настраиваемая настройка сайта имеет опцию themeable: true.
На данный момент только две настройки сайта являются настраиваемыми — enable_welcome_banner и search_experience — но в будущем мы, вероятно, сделаем больше настроек сайта настраиваемыми.
Как авторы тем могут контролировать значения по умолчанию?
Авторы тем могут определить переопределения настроек темы в файле about.json под ключом theme_site_settings, как показано ниже:
"theme_site_settings": {
"enable_welcome_banner": false
}
Любое значение здесь будет сохранено в базе данных и связано с темой. После сохранения значения изменения в theme_site_settings в файле about.json при обновлении темы не повлияют на текущее сохранённое значение в базе данных, поскольку мы не можем знать, изменил ли администратор настройку в промежуточное время.
Каковы ограничения настраиваемых настроек сайта?
Настраиваемые настройки сайта предназначены в основном для управления элементами интерфейса, и при получении их значения требуется ID темы, поэтому применяются следующие ограничения:
- Настраиваемые настройки сайта нельзя использовать в задачах Sidekiq.
- Настраиваемые настройки сайта нельзя использовать в правилах Markdown.
- Настраиваемые настройки сайта будут кэшироваться отдельно от клиентских настроек сайта с использованием ID темы в качестве ключа.
- Настраиваемые настройки сайта будут переопределять ключи в сервисе
siteSettingsна клиенте с использованием предварительного загрузчика приложения. SiteSetting.client_settings_jsonне будет включать настраиваемые настройки сайта; вместо этого вы можете вызватьSiteSetting.theme_site_settings_jsonс ID темы.
Как общее правило, настройки темы предназначены только для простых настроек, контролирующих части интерфейса, а не для серверной логики.

