Wie ordne ich bei der Theme-Installation bestimmten Regionen Blöcke zu?

9

Drupal 8 bietet standardmäßig einige Blöcke. Z.B. Site Branding, Main Navigation, Powered by Drupal, SearchUsw.

Ich habe ein Thema mit Site branding& Main Navigationbenannten Regionen erstellt, in denen entsprechende Blöcke platziert werden können.

Wenn ich mein Thema aktiviere, werden Site Branding& Main NavigationBlöcke standardmäßig in Header& First SidebarRegion meines Themas platziert.

Wie kann ich Site Branding& Main NavigationBlöcke bei der Theme-Installation standardmäßig in ihren jeweiligen Regionen platzieren?

kmdhrm
quelle
2
Sie müssen Blockinstanzen erstellen, die Konfigurationsobjekte sind, und diese in das Konfigurations- / Installationsverzeichnis Ihres Themas einfügen.

Antworten:

8

Zunächst sollten Sie jeden gewünschten Blockbereich manuell ändern Administration>Structure>Block layout Tabund dann zur Konfigurations-Exportfunktion gehen, um
Administration>Configuration>Development>Configuration synchronization>Export Tab>Single itemdie Blockeinstellungen für Ihr Thema zu exportieren.
Dann sollten Sie sich die generierten YAML-Dateien ansehen und diese in einem neuen Ordner innerhalb Ihres Themas unter ablegen /config/install. Anschließend haben Sie das Design deinstalliert und als Standard neu installiert.

Zusammenfassung:
1. Installieren MY_THEME
2. Platzieren Sie die Blöcke in den gewünschten Regionen.
3. Exportieren Sie die Konfigurationsdateien und entfernen Sie sie uuidund den Kernkonfigurations-Hash,
z. B. Site Brandingdie block.block.MY_THEME_branding.ymlBlockdatei

langcode: en
status: true
dependencies:
  module:
    - system
  theme:
    - DEPENDENT_THEME
id: MY_THEME_branding
theme: MY_THEME
region: site_branding
weight: 0
provider: null
plugin: system_branding_block
settings:
  id: system_branding_block
  label: 'Site branding'
  provider: system
  label_display: '0'
  use_site_logo: true
  use_site_name: true
  use_site_slogan: true
visibility: {  }
  1. Platzieren Sie die Konfigurationsdateien in MY_THEME/config/optionaloder im MY_THEME/config/installVerzeichnis (wenn Sie absolut sicher sind, dass alle Abhängigkeiten erfüllt sind).
  2. Deinstallieren MY_THEMEund löschen Sie alle Caches
  3. Installieren Sie MY_THEMEerneut
Mojtaba Reyhani
quelle
7

Die Antwort gefunden:

Dies kann durch Hinzufügen einer yml-Datei (Blockinstanz) für jeden Block im theme/config/installOrdner erfolgen.

Um beispielsweise den Site BrandingBlock (Maschinenname system_branding_block) der Site BrandingRegion (Maschinenname site_branding) zuzuweisen, fügen Sie den folgenden Code in die config/install/block.block.THEME_NAME_branding.ymlDatei ein:

langcode: en
status: true
dependencies:
  module:
    - system
  theme:
    - DEPENDENT_THEME
id: THEME_NAME_branding
theme: THEME_NAME
region: site_branding
weight: 0
provider: null
plugin: system_branding_block
settings:
  id: system_branding_block
  label: 'Site branding'
  provider: system
  label_display: '0'
  use_site_logo: true
  use_site_name: true
  use_site_slogan: true
visibility: {  }
kmdhrm
quelle