Drupal 8'de özel bir Düzen oluşturucu nasıl oluşturulur

Yayınlanan: 2019-10-15

Drupal 8, içerik yazarları için işleri çok daha kolay hale getiriyor. Layout Builder modülünün çekirdek Drupal 8'e eklenmesinin en önemli nedenlerinden biri.

Önceki makalemde, Drupal 8'in Layout oluşturucusunu kurmaya ve kullanmaya nasıl başlayabileceğinizi yazmıştım. Burada, benzersiz gereksinimler için bir düzen oluşturucuyu özelleştirme konusundaki bilgilerimi paylaşmak istiyorum.

drupal web siteniz birden çok bloklu birden çok bölüme ihtiyaç duyuyorsa, Drupal tarafından sağlanan varsayılan bölümleri kullanamazsınız. Bunun için kendi özel düzeninizi oluşturabilirsiniz.

Layout Builder'a Başlarken:

İlk olarak özel layout oluşturucumuz için özel bir layout oluşturucu modülü oluşturacağız. Klasörü custom_layout olarak adlandıracağız. Ardından bir info.yml dosyası oluşturacağız. Bunun için temel anahtarları belirtmeliyiz. drupal 8 içindeki özel düzen oluşturucu, düzen oluşturucu modülüne bağımlı olacaktır. Onu burada belirtelim.

özel düzen
 Kod:
isim: 'Özel Düzen'
tip: modül
açıklama: 'Bina düzeni için bir yol sağlar'
çekirdek: 8.x
paket: 'Özel'
bağımlılıklar:
 - layout_builder:layout_builder

Ardından, özel yerleşimimiz için bölgeleri belirtmek üzere layouts.yml dosyası oluşturacağız.

  • custom_layout: özel düzen oluşturucu düzenimiz için anahtar.
  • etiket: Özel düzen oluşturucu düzenimiz için etiket.
  • kategori: Özel düzen oluşturucu düzenimiz için kategori.
  • default_region: Varsayılan bölge, tüm yerleşim türlerinde varsayılan olan bölgelerdir.
  • icon_map: Düzenimizi seçerken karşımıza çıkacak olan simge.

Örneğin:

özel düzen

Yukarıdaki simge haritasını oluşturmak için aşağıdaki adımları izlememiz gerekiyor.

1. İlk satır “Sol Başlık” ve “Sağ Başlık”
Belirttik - [ header_left, header_left, header_right ] - header_left
2 kez tanımlanır, böylece ekranın toplam genişliğinin 2 bölümünü alır, ardından header_right bölümün geri kalanını alır, böylece oran “%75/%25” olur.
2. İkinci satır “İçerik” ve “Kenar Çubuğu”
Belirttik - [ içerik, içerik, kenar çubuğu ] yukarıdaki mantığın aynısını burada da uyguladık.
3. Üçüncü satır “Sol Alt Bilgi” ve “Sağ Alt Bilgi”
Belirttik - [ footer_left, footer_right] - sadece 2 bölge olduğundan her biri %50 alacaktır.

  • bölgeler: Düzenimiz için ihtiyaç duyduğumuz bölgeler. header_left, header_right, sidebar, content, footer_left, footer_right var.
özel düzen oluşturucu

Kod:

 custom_layout:
 etiket: 'Özel Düzen'
 kategori: 'Özel Düzenler'
 default_region: içerik
 icon_map:
   - [header_left, header_left, header_right]
   - [içerik, içerik, kenar çubuğu]
   - [içerik, içerik, kenar çubuğu]
   - [içerik, içerik, kenar çubuğu]
   - [footer_left, footer_right]

 bölgeler:
   header_left:
     etiket: Sol Başlık
   header_right:
     etiket: Başlık Sağ
   kenar çubuğu:
     etiket: Kenar çubuğu
   içerik:
     etiket: İçerik
   footer_left:
     etiket: Altbilgi Sol
   footer_right:
     etiket: Alt Bilgi Sağ

Ardından layoutumuz için bir html yapısı oluşturalım. Modülümüz içerisinde “layouts” adında bir klasör oluşturacağız. Klasörde “custom_layout” adında başka bir klasör oluşturacağız.

Ve bu klasör içerisinde “custom-layout.html.twig” adında bir twig dosyası oluşturacağız.

özel düzen oluşturucu


twig dosyasını layouts.yml'de belirtmeliyiz

  • path: Html yapınızın hangi klasöre yazılacağını belirtir
  • şablon: Yol altında bu yerleşim için hangi dal şablonunun kullanılacağını belirtir.

özel düzen
 Kod:

custom_layout:
 etiket: 'Özel Düzen'
 yol: layouts/custom_layout
 kategori: 'Özel Düzenler'
 şablon: özel düzen
 default_region: içerik
 icon_map:
   - [header_left, header_left, header_right]
   - [içerik, içerik, kenar çubuğu]
   - [içerik, içerik, kenar çubuğu]
   - [içerik, içerik, kenar çubuğu]
   - [footer_left, footer_right]

 bölgeler:
   header_left:
     etiket: Sol Başlık
   header_right:
     etiket: Başlık Sağ
   kenar çubuğu:
     etiket: Kenar çubuğu
   içerik:
     etiket: İçerik
   footer_left:
     etiket: Altbilgi Sol
   footer_right:
     etiket: Alt Bilgi Sağ

Ardından “custom-layout.html.twig” dosyasına bölgelerimiz için html yapısını yazacağız.
Sınıfları "layout" ve "layout--custom-layout" olarak ayarlayacağız ve tüm içeriği bunun içine saracağız.
layouts.yml içinde tanımlı bölgeleri belirleyeceğiz, “{{ content.header_left }}” gibi bölgelere erişebiliriz.

düzen oluşturucu

Kod:

{% set sınıfları = [
'Yerleşim',
'düzen--özel-düzen',
] %}
{% eğer içerik %}
<div{{ öznitelikler.addClass(sınıflar) }}>
{% if content.header_left %}
<div {{ zone_attributes.header_left.addClass('layout__region', 'layout__region--header_left') }}>
{{ content.header_left }}
</div>
{% endif %}
{% if content.header_right %}
<div {{ zone_attributes.header_right.addClass('layout__region', 'layout__region--header_right') }}>
{{ content.header_right }}
</div>
{% endif %}
{% if content.content %}
<div {{ zone_attributes.content.addClass('layout__region', 'layout__region--content') }}>
{{ içerik.içerik }}
</div>
{% endif %}
{% if content.sidebar %}
<div {{ zone_attributes.sidebar.addClass('layout__region', 'layout__region--sidebar') }}>
{{içerik.yan çubuğu }}
</div>
{% endif %}
{% if content.footer_left %}
<div {{ bölge_attributes.footer_left.addClass('layout__region', 'layout__region--footer_left') }}>
{{ content.footer_left }}
</div>
{% endif %}
{% if content.footer_right %}
<div {{ zone_attributes.footer_right.addClass('layout__region', 'layout__region--footer_right') }}>
{{ content.footer_right }}
</div>
{% endif %}
</div>
{% endif %}

Html yapısı yazıldıktan sonra her bölge için css yazmamız gerekecek. Şimdi özel modülümüzde library.yml oluşturacağız.

düzen oluşturucu

Kod:

 custom_layout:
sürüm: VERSİYON
css:
   tema:
     css/custom_layout.css: {}

Bu kütüphaneyi layouts.yml içerisinde tanımlayacağız.

düzen oluşturucu

Kod:

 custom_layout:
 etiket: 'Özel Düzen'
 yol: layouts/custom_layout
 kategori: 'Özel Düzenler'
 şablon: özel düzen
 kitaplık: custom_layout/custom_layout
 default_region: içerik
 icon_map:
   - [header_left, header_left, header_right]
   - [içerik, içerik, kenar çubuğu]
   - [içerik, içerik, kenar çubuğu]
   - [içerik, içerik, kenar çubuğu]
   - [footer_left, footer_right]

 bölgeler:
   header_left:
     etiket: Sol Başlık
   header_right:
     etiket: Başlık Sağ
   kenar çubuğu:
     etiket: Kenar çubuğu
   içerik:
     etiket: İçerik
   footer_left:
     etiket: Altbilgi Sol
   footer_right:
     etiket: Alt Bilgi Sağ

Şimdi bölge bloğumuzu şekillendirmeye başlayalım. Her bölge için yapıyı aşağıdaki gibi belirleyeceğiz-

düzen oluşturucu

Kod:

 .layout--özel düzen {
 ekran: -webkit-kutusu;
 ekran: -ms-flexbox;
 ekran: esnek;
 -ms-flex-sarma: sarma;
 esnek sarma: sarma;
}

@medya ekranı ve (min-width: 40em) {
 .layout--özel-düzen .layout__region--header_left {
   -webkit-box-flex: 0;
   -ms-flex: 0 1 %70;
   esnek: 0 1 %70;
 }

 .layout--özel-düzen .layout__region--header_right {
   -webkit-box-flex: 0;
   -ms-flex: 0 1 %30;
   esnek: 0 1 %30;
 }

 .layout--özel-düzen .layout__region--içerik {
   -webkit-box-flex: 0;
   -ms-flex: 0 1 %70;
   esnek: 0 1 %70;
 }

 .layout--özel-düzen .layout__region--kenar çubuğu {
   -webkit-box-flex: 0;
   -ms-flex: 0 1 %30;
   esnek: 0 1 %30;
 }

 .layout--özel-düzen .layout__region--footer_left {
   -webkit-box-flex: 0;
   -ms-flex: 0 1 %50;
   esnek: 0 1 %50;
 }

 .layout--özel-düzen .layout__region--footer_right {
   -webkit-box-flex: 0;
   -ms-flex: 0 1 %50;
   esnek: 0 1 %50;
 }
}

Ardından, özel modülümüzü etkinleştirelim

düzen-oluşturucu-modülü

Yapı -> İçerik türleri'ne gidelim ve herhangi bir içerik türü için “ Ekranı yönet ” seçeneğine tıklayalım . Şimdilik ' makale ' içerik türünü kullanacağız.

düzenleme-düzen-oluşturucu

Özel düzenimizi seçtikten sonra-

özel düzen