Настройки темы сайта теперь доступны

Мы добавили новый способ для разработчиков тем управлять опытом работы на сайте. Настраиваемые настройки сайта позволяют темам переопределять ограниченную группу настроек сайта, определённых ядром Discourse. :gear:

Чем настраиваемые настройки сайта отличаются от других?

У нас уже есть понятия настроек тем и модификаторов тем, так чем же настраиваемые настройки сайта отличаются? Вот краткое резюме:

  • Настройки тем — это пользовательские настройки, используемые для управления интерфейсом и функциональностью внутри вашей темы или компонента, предоставляющие варианты конфигурации. Они не могут изменять основную функциональность Discourse.
  • Модификаторы тем — позволяют теме или компоненту изменять выбранную функциональность серверной части ядра Discourse в качестве альтернативы созданию плагина.
  • :sparkles: Настраиваемые настройки сайта (новое) — позволяют теме (но не компонентам) переопределять небольшой поднабор основных настроек сайта, которые обычно контролируют части интерфейса и другую незначительную функциональность. Это даёт темам больший контроль над полным опытом работы на сайте.

Настраиваемые настройки сайта имеют идентичные типы данных и значения тем настройкам сайта, которые они переопределяют. По сути, значение настройки сайта в базе данных становится неактуальным, так как теперь каждая тема контролирует это значение индивидуально.

Как администраторы могут просматривать и изменять настраиваемые настройки сайта?

Администраторы могут просматривать и изменять настраиваемые настройки сайта в двух местах. Во-первых, на странице каждой отдельной темы теперь есть раздел «Настройки, которые может переопределить тема», как показано ниже, над другим разделом, отображающим настройки темы, определённые самой темой:

Точка указывает, что значение было изменено относительно значения по умолчанию для настройки сайта. Нажатие кнопки «Сброс» вернёт значение настройки темы к значению по умолчанию для настройки сайта.

Второе место, где администраторы могут просмотреть эти настройки, — новая страница /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 темы.

Как общее правило, настройки темы предназначены только для простых настроек, контролирующих части интерфейса, а не для серверной логики.

34 лайка

Thanks a lot for this update! It’s a great help!

7 лайков

What happens if I change enable_welcome_banner later, i.e. after this migration has happened? Will I need to adjust each theme accordingly?

4 лайка

Yes, you cannot change these site settings directly anymore, they will only show in each individual theme’s Edit page.

2 лайка

Should the Welcome banner location setting also be included?

3 лайка

Are themable site settings also able to include site settings for assets such as logo onebox images?

3 лайка

A quick update here – themeable site settings will now show when searching “All settings” to make them a bit easier to discover:

4 лайка