Come assegnare blocchi a determinate regioni durante l'installazione del tema?


9

Drupal 8 fornisce alcuni blocchi per impostazione predefinita. Per esempio. Site Branding, Main Navigation, Powered by Drupal, SearchEtc.

Ho creato un tema che ha Site brandinge Main Navigationdenominato le regioni in cui è possibile posizionare i blocchi corrispondenti.

Quando abilito il mio tema, i blocchi Site Branding& Main Navigationsono posizionati rispettivamente nella Header& First Sidebarregione del mio tema.

Come posso posizionare Site Brandinge Main Navigationbloccare le rispettive regioni per impostazione predefinita sull'installazione del tema?


2
Devi creare istanze di blocco che sono oggetti di configurazione e inserirle nella directory config / install del tuo tema.

Risposte:


8

Prima di tutto, dovresti cambiare ogni regione di blocco desiderata in cui vuoi manualmente Administration>Structure>Block layout Tabe poi andare alla funzione di esportazione della configurazione in:
Administration>Configuration>Development>Configuration synchronization>Export Tab>Single itemper esportare ciascuna delle impostazioni di blocco per il tuo tema.
Quindi dovresti dare un'occhiata ai file YAML generati e metterli in una nuova cartella all'interno del tuo tema in /config/install. hai quindi disinstallato il tema e quindi reinstallato come predefinito.

Riepilogo:
1. Installa MY_THEME
2. Posiziona i blocchi nelle aree desiderate
3. Esporta i file di configurazione e rimuovi da essi uuide l'hash di configurazione principale,
ad esempio il file di Site Brandingbloccoblock.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. Posiziona i file di configurazione MY_THEME/config/optionalo la MY_THEME/config/installdirectory (se sei assolutamente sicuro che tutte le dipendenze siano soddisfatte)
  2. Disinstallare MY_THEMEe cancellare tutte le cache
  3. Reinstalla di MY_THEMEnuovo

7

Trovato la risposta:

Questo può essere fatto aggiungendo un file yml (istanza di blocco) per ciascun blocco nella theme/config/installcartella.

Ad esempio, per assegnare il Site Brandingblocco (nome macchina system_branding_block) alla Site Brandingregione (nome macchina site_branding) aggiungere il seguente codice nel 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: {  }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.