Как установить тему по умолчанию программно

8

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

Добавление в MYPROFILE.info.yml ...

theme:
  - my_theme

...недостаточно. Это только устанавливает его, но это не установлено в качестве темы по умолчанию.

Я думаю, что я должен сделать что-то еще в файле MYPROFILE.install в

function MYPROFILE_install() {
  // how to set as default my custom theme
}

Спасибо

Гийом Буа
источник

Ответы:

11

Глядя на ThemeController::setDefaultTheme(обработчик запроса для маршрута / admin / появление / по умолчанию), это должно сделать свое дело:

\Drupal::configFactory()
  ->getEditable('system.theme')
  ->set('default', 'machine_name')
  ->save();
Клайв
источник
Чтобы это работало, тема должна быть уже включена. До сих пор не знаю, как включить его программно.
dxvargas
3
@hiphip К счастью, это довольно просто:\Drupal::service('theme_installer')->install(['theme_name']);
Клайв
-2

Вы можете создать сайт с правильной темой по умолчанию и скопировать файлы конфигурации, связанные с темой, в каталог конфигурации вашего профиля (или все файлы, если это имеет смысл для вашего профиля).

См. Https://www.drupal.org/node/2210443#config для получения дополнительной информации.

acrosman
источник