Bagaimana cara menetapkan blok ke wilayah tertentu pada instalasi tema?

9

Drupal 8 menyediakan beberapa blok secara default. Misalnya. Site Branding, Main Navigation, Powered by Drupal, SearchDll

Saya telah membuat tema yang memiliki Site branding& Main Navigationmenamai wilayah tempat blok yang sesuai dapat ditempatkan.

Ketika saya mengaktifkan tema saya, Site Branding& Main Navigationblok masing-masing ditempatkan di Header& First Sidebarwilayah tema saya secara default.

Bagaimana cara saya menempatkan Site Branding& Main Navigationmemblokir ke wilayah masing-masing secara default pada instalasi tema?

kmdhrm
sumber
2
Anda harus membuat instance blok yang merupakan objek konfigurasi dan memasukkannya ke direktori config / install tema Anda.

Jawaban:

8

Pertama-tama, Anda harus mengubah setiap wilayah blok yang Anda inginkan secara manual Administration>Structure>Block layout Tabdan kemudian pergi ke fungsi ekspor konfigurasi di:
Administration>Configuration>Development>Configuration synchronization>Export Tab>Single itemuntuk mengekspor setiap pengaturan blok untuk tema Anda.
Maka Anda harus melihat ke file-file YAML yang dihasilkan dan menempatkannya di folder baru di dalam tema Anda di /config/install. Anda kemudian menghapus tema dan menginstalnya kembali sebagai default.

Ringkasan:
1. Instal MY_THEME
2. Tempatkan blok di wilayah yang diinginkan
3. Ekspor file konfigurasi dan hapus dari mereka uuiddan inti konfigurasi hash
misalnya file Site Brandingblokblock.block.MY_THEME_branding.yml

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. Tempatkan file config ke MY_THEME/config/optionalatau MY_THEME/config/installdirektori (jika Anda benar-benar yakin semua dependensi terpenuhi)
  2. Copot pemasangan MY_THEMEdan hapus semua cache
  3. Pasang MY_THEMEkembali
Mojtaba Reyhani
sumber
7

Ditemukan jawabannya:

Ini dapat dilakukan dengan menambahkan file yml (contoh blok) untuk setiap blok dalam theme/config/installfolder.

Untuk mis., Untuk menetapkan Site Brandingblok (nama mesin system_branding_block) ke Site Brandingwilayah (nama mesin site_branding) tambahkan kode berikut dalam config/install/block.block.THEME_NAME_branding.ymlfile:

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
sumber