如何以编程方式设置默认主题


8

我正在尝试构建安装配置文件,并且希望启用自定义主题并在安装后默认情况下进行设置。

正在添加MYPROFILE.info.yml ...

theme:
  - my_theme

...是不足够的。这只会安装它,但不会将其设置为默认主题。

我想我必须在MYPROFILE.install文件中执行其他操作

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

谢谢

Answers:


11

看一下ThemeController::setDefaultTheme(/ admin / appearance / default路由的请求处理程序),这应该可以解决问题:

\Drupal::configFactory()
  ->getEditable('system.theme')
  ->set('default', 'machine_name')
  ->save();

为此,必须已启用主题。仍然不知道如何以编程方式启用它。
dxvargas

3
@hiphip幸运的是,这很简单:\Drupal::service('theme_installer')->install(['theme_name']);
Clive

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.