Modüller

Web teması geliştirme

Blesyum Web için tema yazma: paket yapısı, doğrulayıcı, CLI ve ziyaretçi sayfasının CSP sınırları.

Blesyum Web'de bir tema, sitenin ziyaretçiye görünen yüzünü çizer. Paket bir ZIP'tir; içindeki her dosya yüklenmeden önce doğrulanır.

Hızlı döngü

bash
blesyum-tema init tema-adim      # başlangıç temasını kopyala
blesyum-tema validate tema-adim  # doğrula (hata varsa çıkış kodu 1)
blesyum-tema watch tema-adim     # değiştikçe yeniden doğrula
blesyum-tema build tema-adim -o tema.zip

Doğrulayıcı sunucununkiyle birebir aynıdır: CLI kendi kurallarını yazmaz. Yerelde geçen bir paket yüklemede de geçer.

Paket yapısı

text
theme.json          # manifest: ad · sürüm · min_engine
templates/          # sayfa iskeletleri (Liquid)
blocks/<ad>/block.json + <ad>.liquid
assets/css/…        # stil
assets/img/…
locales/tr.json     # tema metinleri
  • theme.json'daki bilinmeyen alan silinmez, olduğu gibi saklanır (ileri uyumluluk) ve Bilgi seviyesinde raporlanır.
  • block.json'daki name ile dizin adı aynı olmalı: ayrışırsa editör bloğu bir adla listeler, motor başka adla arar ve blok sessizce çizilmez.
  • min_engine uyuşmazsa paket yüklenmez ve sebep rakamla söylenir. Major farkı iki yönde de kapalıdır: major, sözleşmeyi BOZDUĞU için artar.
  • Sürüm tam semver olmalı: &quot;1.2&quot; 1.2.0 SAYILMAZ — yazmadığın bir değeri sana atfetmek, doğru olsa bile bir tahmindir.

🔴 Ziyaretçi sayfasında JavaScript ÇALIŞMAZ

Bu, eksik bir özellik değil mimarinin kendisidir. Ziyaretçi sayfaları şu CSP altında servis edilir:

KaynakDurum
script-srcYOK (→ &#39;none&#39;)
frame-srcYOK
style-src&#39;self&#39; &#39;unsafe-inline&#39;
img-src&#39;self&#39; data:
font-src · media-src&#39;self&#39;
form-action&#39;self&#39;

Sonuçları:

  • &lt;script&gt; yazma. Tarayıcıda sessizce düşer: curl doğru HTML'i gösterir, uç 200 döner, log temizdir ve hata YALNIZ ziyaretçinin ekranında görünür. Doğrulayıcı bunu yükleme anında hata olarak bildirir.
  • &lt;iframe&gt; gömme. Kutu boş çizilir. Dış içerik için bir bağlantı kullan: bağlantı CSP'ye tabi değildir (CSP kaynak YÜKLEMEYİ kısıtlar, gezinmeyi değil).
  • CDN'den görsel/font çekme. img-src &#39;self&#39; data: — dış host engellenir. Varlıkları paketin assets/ dizinine koy.
  • Formu fetch ile gönderme. Düz POST kullan; form-action &#39;self&#39; açık.

Neden böyle: tema kodu kiracının/ajansın yazdığı koddur ve panel AYRI origin'de yaşar (&lt;slug&gt;--panel.web.&lt;alan&gt;). Aynı origin'de çalışan bir tema JS'i panelin oturum token'ını okuyabilirdi ve bunu hiçbir CSP durduramazdı.

Doğrulayıcının baktıkları

EksenÖrnek
SözdizimiLiquid ayrıştırılabiliyor mu
CSP&lt;script&gt; · dış img/font · &lt;iframe&gt;
Erişilebilirlikalt eksikliği · başlık hiyerarşisi
Performansboyutsuz görsel · çok büyük varlık
Dileksik çeviri uyarıdır, hata değil (zincirin son halkası kaynak metindir)

Şablonda ne var

Tema şablonları yalnız çizim yapar; veriyi sunucu hazırlar. Bazı bloklar (contact_form · newsletter · ürün blokları · rss_feed · post_list · module_link · support_link) HTML'lerini sunucu üretir ve tema onları ezemez — action adresi, fiyat/stok yorumu ve dış metnin kaçırılması birer sözleşmedir.

Yükleme ve sürümler

Her yükleme ayrı bir kayıttır; aynı ad + sürüm iki kez kurulamaz. Yükleme bir AKTİVASYON değildir: canlı siteyi anında yeniden boyamak, müşterinin kararını sormadan uygulamak olurdu. Aktivasyon ayrı bir adımdır ve bir uyumluluk raporu üretir (karşılıksız kalan bloklar · taşınan ayarlar).

Geri almak için ayrı bir mekanizma yoktur: önceki sürümün kaydı durur ve aktive edilebilir. Site ayarlarındaki sürüm geçmişi hangisinin canlı olduğunu gösterir.

Bu sayfa işine yaradı mı?