web-dev-qa-db-fra.com

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

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

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

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

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

9
kmdhrm

Tout d'abord, vous devez modifier manuellement chaque région de bloc souhaitée que vous souhaitez à Administration>Structure>Block layout Tab, puis accédez à la fonction d'exportation de configuration à l'adresse:
Administration>Configuration>Development>Configuration synchronization>Export Tab>Single item pour exporter chacun les paramètres de blocage 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.

Sommaire:
1. Installer MY_THEME
2. Placer les blocs dans les régions souhaitées
3. Exportez les fichiers de configuration et supprimez-les uuid et le hachage de configuration principal
par exemple Site Branding bloquer block.block.MY_THEME_branding.yml fichier

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 MY_THEME/config/optional ou MY_THEME/config/install répertoire (si vous êtes absolument sûr que toutes les dépendances sont respectées)
  2. Désinstaller MY_THEME et effacez tous les caches
  3. Réinstaller MY_THEME encore
8
Mojtaba Reyhani

Trouvé la réponse:

Cela peut être fait en ajoutant un fichier yml (instance de bloc) pour chaque bloc dans le theme/config/install dossier.

Par exemple, pour attribuer le Site Branding block (nom de la machine system_branding_block) à la Site Branding région (nom de la machine site_branding) ajoutez le code suivant dans le config/install/block.block.THEME_NAME_branding.yml fichier:

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: {  }
7
kmdhrm