Jak przypisać bloki do poszczególnych regionów podczas instalacji motywu?

9

Drupal 8 domyślnie udostępnia kilka bloków. Na przykład. Site Branding, Main Navigation, Powered by Drupal, SearchItd.

Stworzyłem motyw, który ma Site brandingi Main Navigationnazwał regiony, w których można umieścić odpowiednie bloki.

Po włączeniu motywu Site Brandingi Main Navigationbloki są domyślnie odpowiednio umieszczane w obszarze Header& First Sidebarregion mojego motywu.

Jak mogę domyślnie umieścić Site Brandingi Main Navigationzablokować odpowiednie regiony podczas instalacji motywu?

kmdhrm
źródło
2
Musisz utworzyć instancje blokowe, które są obiektami konfiguracji i umieścić je w katalogu config / install kompozycji.

Odpowiedzi:

8

Przede wszystkim powinieneś zmienić każdy pożądany region bloku, w którym chcesz ręcznie, Administration>Structure>Block layout Taba następnie przejść do funkcji eksportu konfiguracji o:
Administration>Configuration>Development>Configuration synchronization>Export Tab>Single itemaby wyeksportować ustawienia bloku dla twojego motywu.
Następnie powinieneś rzucić okiem na wygenerowane pliki YAML i umieścić je w nowym folderze w temacie /config/install. następnie odinstalowałeś motyw, a następnie ponownie go zainstalowałeś jako domyślny.

Podsumowanie:
1. Instalacja MY_THEME
2. Umieść bloki w pożądanych regionów
3. Pliki Export konfiguracyjne i usunąć z nich uuidi Core config hash
na przykład Site Brandingbloku block.block.MY_THEME_branding.ymlpliku

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. Umieść pliki konfiguracyjne w katalogu MY_THEME/config/optionallub MY_THEME/config/install(jeśli masz absolutną pewność, że wszystkie zależności są spełnione)
  2. Odinstaluj MY_THEMEi wyczyść wszystkie pamięci podręczne
  3. Zainstaluj MY_THEMEponownie
Mojtaba Reyhani
źródło
7

Znaleziono odpowiedź:

Można to zrobić, dodając plik yml (instancja bloku) dla każdego bloku w theme/config/installfolderze.

Na przykład, aby przypisać Site Brandingblok (nazwę maszyny system_branding_block) do Site Brandingregionu (nazwa maszyny site_branding), dodaj następujący kod do config/install/block.block.THEME_NAME_branding.ymlpliku:

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
źródło