테마 설치시 특정 지역에 블록을 할당하는 방법은 무엇입니까?


9

Drupal 8은 기본적으로 일부 블록을 제공합니다. 예 : Site Branding, Main Navigation, Powered by Drupal, Search

I는 한 테마 작성한 Site brandingMain Navigation대응하는 블록을 배치 할 수있는 영역을 선정한다.

테마를 활성화하면 기본적으로 Site Branding& Main Navigation블록이 테마의 Header& First Sidebar영역에 배치됩니다 .

테마 설치시 기본적으로 해당 지역을 어떻게 배치 Site Branding하고 Main Navigation차단할 수 있습니까?


2
구성 객체 인 블록 인스턴스를 생성하여 테마의 config / install 디렉토리에 배치해야합니다.

답변:


8

우선, 원하는 각 블록 영역을 수동으로 변경 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다시

7

답을 찾았습니다.

theme/config/install폴더의 각 블록에 대해 yml 파일 (블록 인스턴스)을 추가하면됩니다 .

예를 들어, Site Branding블록 (machine name system_branding_block)을 Site Brandingregion (machine name 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.