Як призначити блоки певним регіонам при встановленні теми?


9

Drupal 8 надає деякі блоки за замовчуванням. Напр. Site Branding, Main Navigation, Powered by Drupal, І Searchт.д.

Я створив тему, яка містить Site brandingі Main Navigationназвала регіони, в яких можна розмістити відповідні блоки.

Коли я вмикаю свою тему, Site Branding& Main Navigationблоки розміщуються в Header& First Sidebarобласті моєї теми за замовчуванням відповідно.

Як я можу розмістити Site Branding& Main Navigationблоки у відповідних регіонах за замовчуванням при встановленні теми?


2
Вам слід створити екземпляри блоків, які є об’єктами конфігурації, і помістити їх у каталог конфігурації / встановлення вашої теми.

Відповіді:


8

Перш за все, слід змінити кожну бажану область блоку, яку ви хочете вручну, Administration>Structure>Block layout Tabа потім перейти до функції експорту конфігурації за адресою:
Administration>Configuration>Development>Configuration synchronization>Export Tab>Single itemекспортувати кожен параметр блоку для вашої теми.
Тоді вам слід поглянути на створені файли YAML і помістити їх у нову папку в межах теми за адресою /config/install. Ви видалили тему, а потім встановили її за замовчуванням.

Короткий зміст:
1. Встановити MY_THEME
2. Розмістити блоки в потрібні регіони.
3. Експортуйте конфігураційні файли та видаліть з них uuidі хеш core config,
наприклад файл Site Brandingблокуblock.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. Розмістіть конфігураційні файли до каталогу MY_THEME/config/optionalабо MY_THEME/config/install(якщо ви абсолютно впевнені, що всі залежності виконані)
  2. Видаліть MY_THEMEта очистіть усі кеші
  3. перевстановлення MY_THEMEзнову

7

Знайшов відповідь:

Це можна зробити, додавши файл yml (блок-примірник) для кожного блоку в theme/config/installпапці.

Наприклад, щоб призначити Site Brandingблок (ім'я машини system_branding_block) Site Brandingрегіону (ім'я машини site_branding), додайте у config/install/block.block.THEME_NAME_branding.ymlфайл такий код :

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: {  }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.