Bölümler ve şema

Bölüm dosyası, ayarlar, bloklar ve hazır kurgular. Satıcının düzenleyicide gördüğü her şey şemadan gelir.

Her bölüm bolumler/<ad>.liquid dosyasıdır. Dosya adı bölümün kalıcı adıdır (küçük harf, rakam, -); satıcının sayfaları bu adla kaydedilir, sonraki sürümlerde değiştirme.

bolumler/baglantilar.liquid
{%- assign s = section.settings -%}
<div class="baglantilar">
  {%- if s.heading != blank -%}<h3>{{ s.heading }}</h3>{%- endif -%}
  <ul>
    {%- for b in section.blocks -%}
      <li {{ b.nitelik }}><a href="{{ b.settings.href | default: '/' }}">{{ b.settings.label }}</a></li>
    {%- endfor -%}
  </ul>
</div>

{% schema %}
{
  "name": "Bağlantılar",
  "settings": [
    { "type": "text", "id": "heading", "label": "Başlık", "maxLength": 120, "localized": true }
  ],
  "blocks": [
    {
      "type": "link",
      "name": "Bağlantı",
      "settings": [
        { "type": "text", "id": "label", "label": "Yazı", "maxLength": 60, "localized": true },
        { "type": "url", "id": "href", "label": "Bağlantı" }
      ]
    }
  ],
  "max_blocks": 12,
  "presets": [
    { "name": "Bağlantılar", "settings": { "heading": "Kurumsal" }, "blocks": [{ "type": "link" }, { "type": "link" }] }
  ]
}
{% endschema %}

Bloğun kapsayıcısına {{ b.nitelik }} yaz

Düzenleyici bloğu bu nitelikle bulur. Yazmazsan satıcı önizlemede bloğa tıklayıp düzenleyemez.

Şema

AlanAçıklama
nameZorunlu. Düzenleyicide bölüm listesinde görünen ad.
settingsBölümün ayarları. Bkz. Ayar türleri.
blocksSatıcının ekleyip sıraladığı tekrar eden parçalar: { type, name, settings, limit }. limit: o türden en çok kaç tane.
max_blocksBölümdeki toplam blok sınırı.
presetsSatıcı bölümü eklediğinde gelen hazır kurgular: ayar değerleri ve bloklar.

Şema geçerli JSON olmalı; ayar kimlikleri (id) küçük harf, rakam ve _ ile yazılır, harfle başlar.

section nesnesi

Bölümün içinde:

AlanAçıklama
section.idBu bölümün sayfadaki kimliği. CSS ve JS'te tekil seçici için.
section.adBölüm dosyasının adı.
section.settings.<id>Ayar değeri; satıcı değiştirmediyse şemadaki default.
section.blocksBloklar, satıcının sırasıyla. Gizlenen blok listede yoktur.
b.type, b.idBloğun türü ve kimliği.
b.settings.<id>Bloğun ayarı.
b.nitelikBloğun kapsayıcısına yazılacak nitelik (yukarıdaki uyarı).

Çizilen bölüm <div class="mk-tema" data-mk-tema="<ad>" id="mk-tema-<section.id>"> içine konur.

Parçalar

Bölümlerin ortak kullandığı HTML'i parcalar/<ad>.liquid'e koy, {% render %} ile çağır:

{%- for p in section.settings.urunler -%}
  {% render 'urun-karti', p: p %}
{%- endfor -%}

Parçanın şeması olmaz; yalnız ona verdiğin değişkenleri ve genel nesneleri (shop, kart…) görür.

Sınırlar

  • Bir bölümün çizimi 500 ms'yi aşarsa kesilir; canlıda o bölüm görünmez, sayfa çizilmeye devam eder.
  • Şablon yalnız kendi nesnelerinin alanlarını okur; constructor gibi iç özelliklere erişilemez.
  • Bilinmeyen süzgeç hata verir (yazım hatasını yüklemede yakalarsın).

Bu sayfada