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

Guillaume Bois
quelle

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();
Clive
quelle
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
-2

Sie können eine Site mit dem richtigen Standarddesign erstellen und die themenbezogenen Konfigurationsdateien in das Konfigurationsverzeichnis Ihres Profils kopieren (oder in alle Dateien, wenn dies für Ihr Profil sinnvoll ist).

Weitere Informationen finden Sie unter https://www.drupal.org/node/2210443#config .

Akrosman
quelle