テーマのインストール時に特定のリージョンにブロックを割り当てる方法は?


9

Drupal 8はデフォルトでいくつかのブロックを提供します。例えば。Site BrandingMain NavigationPowered by DrupalSearchなど

私が持っているテーマ作成しているSite brandingMain Navigation、対応するブロックが配置できる領域を命名します。

テーマを有効にすると、Site BrandingMain NavigationブロックはデフォルトでそれぞれテーマのHeaderFirst Sidebarリージョンに配置されます。

テーマのインストール時に、デフォルトでそれぞれのリージョンに配置Site BrandingおよびMain Navigationブロックするにはどうすればよいですか?


2
構成オブジェクトであるブロックインスタンスを作成し、テーマのconfig / installディレクトリに配置する必要があります。

回答:


8

まず最初に、希望する各ブロックリージョンを手動で変更しAdministration>Structure>Block layout Tab、次にconfig export関数に移動して
Administration>Configuration>Development>Configuration synchronization>Export Tab>Single item、テーマの各ブロック設定をエクスポートする必要があります。
次に、生成されたYAMLファイルを確認し、それをのテーマ内の新しいフォルダーに配置します/config/install。次に、テーマをアンインストールして、デフォルトとして再インストールしました。

要約:
1.インストールMY_THEME
2.目的の領域にブロックを配置
3.構成ファイルをエクスポートしてそれらから削除しuuid、ブロックファイルの
例のコア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

答えが見つかりました:

これは、theme/config/installフォルダー内のブロックごとにymlファイル(ブロックインスタンス)を追加することで実行できます。

たとえば、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: {  }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.