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

Guillaume Bois
fonte

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();
Clive
fonte
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.

acrrosman
fonte