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ü
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.zipDoğ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ı
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 metinleritheme.json'daki bilinmeyen alan silinmez, olduğu gibi saklanır (ileri uyumluluk) veBilgiseviyesinde raporlanır.block.json'dakinameile dizin adı aynı olmalı: ayrışırsa editör bloğu bir adla listeler, motor başka adla arar ve blok sessizce çizilmez.min_engineuyuş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ı:
"1.2"1.2.0SAYILMAZ — 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:
| Kaynak | Durum |
|---|---|
script-src | YOK (→ 'none') |
frame-src | YOK |
style-src | 'self' 'unsafe-inline' |
img-src | 'self' data: |
font-src · media-src | 'self' |
form-action | 'self' |
Sonuçları:
<script>yazma. Tarayıcıda sessizce düşer:curldoğ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.<iframe>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 'self' data:— dış host engellenir. Varlıkları paketinassets/dizinine koy. - Formu
fetchile gönderme. DüzPOSTkullan;form-action 'self'açık.
Neden böyle: tema kodu kiracının/ajansın yazdığı koddur ve panel AYRI origin'de yaşar (<slug>--panel.web.<alan>). 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özdizimi | Liquid ayrıştırılabiliyor mu |
| CSP | <script> · dış img/font · <iframe> |
| Erişilebilirlik | alt eksikliği · başlık hiyerarşisi |
| Performans | boyutsuz görsel · çok büyük varlık |
| Dil | eksik ç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.