Como definir um tema padrão programaticamente


8

Estou tentando criar um perfil de instalação e quero ter meu tema personalizado ativado e definido por padrão após a instalação.

Adicionando MYPROFILE.info.yml ...

theme:
  - my_theme

...não é o suficiente. Isso o instala apenas, mas não está definido como o tema padrão.

Acho que tenho que fazer outra coisa no arquivo MYPROFILE.install

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

Obrigado

Respostas:


11

Observando ThemeController::setDefaultTheme(o manipulador de solicitações da rota / admin / aparecimento / padrão), isso deve fazer o truque:

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

Para que isso funcione, o tema já deve estar ativado. Ainda não sabe como ativá-lo programaticamente.
Dxvargas

3
@hiphip Felizmente isso é bem direto:\Drupal::service('theme_installer')->install(['theme_name']);
Clive

-2

Você pode criar um site que tenha o tema padrão correto e copiar os arquivos de configuração relacionados ao tema no diretório de configuração do seu perfil (ou todos os arquivos, se fizer sentido para o seu perfil).

Consulte https://www.drupal.org/node/2210443#config para obter mais informações.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.