Comment définir un thème par défaut par programme

8

J'essaie de créer un profil d'installation et je veux que mon thème personnalisé soit activé et défini par défaut après l'installation.

Ajout dans MYPROFILE.info.yml ...

theme:
  - my_theme

...n'est pas assez. Cela l'installe uniquement, mais il n'est pas défini comme thème par défaut.

Je suppose que je dois faire autre chose dans le fichier MYPROFILE.install dans

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

Je vous remercie

Guillaume Bois
la source

Réponses:

11

En regardant ThemeController::setDefaultTheme(le gestionnaire de requêtes pour la route / admin / apparence / par défaut), cela devrait faire l'affaire:

\Drupal::configFactory()
  ->getEditable('system.theme')
  ->set('default', 'machine_name')
  ->save();
Clive
la source
Pour que cela fonctionne, le thème doit être déjà activé. Je ne sais toujours pas comment l'activer par programme.
dxvargas
3
@hiphip Heureusement, c'est assez simple:\Drupal::service('theme_installer')->install(['theme_name']);
Clive
-2

Vous pouvez créer un site qui a le thème par défaut correct et copier les fichiers de configuration liés au thème dans le répertoire de configuration de votre profil (ou tous les fichiers si cela convient à votre profil).

Voir https://www.drupal.org/node/2210443#config pour plus.

acrosman
la source