Comment attribuer des blocs à des régions particulières lors de l'installation du thème?

9

Drupal 8 fournit certains blocs par défaut. Par exemple. Site Branding, Main Navigation, Powered by Drupal, SearchEtc.

J'ai créé un thème qui a Site branding& Main Navigationnommé les régions dans lesquelles les blocs correspondants peuvent être placés.

Lorsque j'active mon thème, les blocs Site Branding& Main Navigationsont placés dans la Header& First Sidebarrégion de mon thème par défaut respectivement.

Comment puis-je placer Site Brandinget Main Navigationbloquer par défaut leurs régions respectives lors de l'installation du thème?

kmdhrm
la source
2
Vous devez créer des instances de bloc qui sont des objets de configuration et les placer dans le répertoire config / install de votre thème.

Réponses:

8

Tout d'abord, vous devez modifier manuellement chaque région de bloc souhaitée à laquelle vous souhaitez Administration>Structure>Block layout Tab, puis accéder à la fonction d'exportation de configuration à:
Administration>Configuration>Development>Configuration synchronization>Export Tab>Single itempour exporter chacun les paramètres de bloc de votre thème.
Ensuite, vous devriez jeter un œil aux fichiers YAML générés et les placer dans un nouveau dossier dans votre thème à /config/install. vous avez ensuite désinstallé le thème, puis l'avez réinstallé par défaut.

Résumé:
1. Installez MY_THEME
2. Placez les blocs dans les régions souhaitées
3. Exportez les fichiers de configuration et supprimez-les uuidet le hachage de configuration principal,
par exemple Site Brandingle block.block.MY_THEME_branding.ymlfichier de bloc

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. Placez les fichiers de configuration dans le répertoire MY_THEME/config/optionalou MY_THEME/config/install(si vous êtes absolument sûr que toutes les dépendances sont respectées)
  2. Désinstaller MY_THEMEet effacer tous les caches
  3. Réinstaller à MY_THEMEnouveau
Mojtaba Reyhani
la source
7

Trouvé la réponse:

Cela peut être fait en ajoutant un fichier yml (instance de bloc) pour chaque bloc du theme/config/installdossier.

Par exemple., Pour affecter le Site Brandingbloc (nom de la machine system_branding_block) à la Site Brandingrégion (nom de la machine site_branding), ajoutez le code suivant dans le config/install/block.block.THEME_NAME_branding.ymlfichier:

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
la source