web-dev-qa-db-ja.com

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

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

対応するブロックを配置できるSite brandingMain Navigationという名前の領域を持つテーマを作成しました。

テーマを有効にすると、デフォルトで、Site BrandingおよびMain NavigationブロックがテーマのHeaderFirst Sidebar領域にそれぞれ配置されます。

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

9
kmdhrm

まず、Administration>Structure>Block layout Tabで希望する各ブロック領域を手動で変更してから、次の場所にある構成エクスポート関数に移動する必要があります。
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を再インストールします
8
Mojtaba Reyhani

答えが見つかりました:

これは、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: {  }
7
kmdhrm