So legen Sie ein Standardthema programmgesteuert fest


8

Ich versuche, ein Installationsprofil zu erstellen, und möchte, dass mein benutzerdefiniertes Design nach der Installation standardmäßig aktiviert und festgelegt wird.

Hinzufügen in MYPROFILE.info.yml ...

theme:
  - my_theme

...ist nicht genug. Dadurch wird es nur installiert, es wird jedoch nicht als Standarddesign festgelegt.

Ich denke, ich muss etwas anderes in der Datei MYPROFILE.install in tun

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

Vielen Dank

Antworten:


11

Wenn Sie sich ThemeController::setDefaultTheme(den Anforderungshandler für die Route / admin / Erscheinungsbild / Standard) ansehen, sollte dies den Trick tun:

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

Damit dies funktioniert, muss das Thema bereits aktiviert sein. Ich weiß immer noch nicht, wie ich es programmgesteuert aktivieren soll.
Dxvargas

3
@hiphip Zum Glück ist das ganz einfach:\Drupal::service('theme_installer')->install(['theme_name']);
Clive

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.