HisarBlok · belgeler
Modüller
Blog, forum, formlar, üyelik: HisarBlok'ta her büyük parça bir modüldür ve site başına açılıp kapanır. Çekirdeğin modülleri de sizin yazacağınız modülle tamamen aynı arayüzü kullanır.
Sürüm 0.13.1 için.
Kutudan çıkan modüller
| Modül | Ne yapar | Varsayılan açık |
|---|---|---|
pages | Markdown ile yazılan ya da bloklardan kurulan sayfalar | evet |
blocks | Sayfaların kurulduğu standart blok türleri | evet |
media | Görsel kitaplığı: yeniden kodlama, üst veri silme, boyutlandırma, WebP | evet |
redirects | Eski adresleri yaşatır; gerçek 301 kuralı dışa aktarır | evet |
announcements | Ana sayfada kısa duyurular | evet |
blog | Tarihli yazılar, etiketler, sayfalı dizin, beslemeler | hayır |
menu | Site menüsünü panelden düzenleme | hayır |
search | Tarayıcıda aranan statik dizin | hayır |
forms | Blok olarak iletişim ve kayıt formları | hayır |
comments | Sayfa ve yazı altında, önce onaylanan yorumlar | hayır |
forum | Kategori, konu, yanıt; statik sayfalar | hayır |
members | Doğrulanmış e-postalı ziyaretçi hesapları | hayır |
downloads | Ürün, sürüm, dosya, sayılan bağlantı, sağlama toplamı | hayır |
Açmak ve kapatmak
Her modül site başına panelin Modüller ekranından açılır ya da kapanır. Kapalı bir modül yüklenmez, kanca kaydetmez ve hiçbir şey sunmaz; siteye yazdığı dosyalar kalkar. Verisi ise kalır: yeniden açıldığında kaldığı yerden sürer. Kaldırma sırasında sitenin kökü, bir dilin kökü, yüklenen medya, temanın dosyaları ve başka bir modülün alanı hiçbir zaman silinmez.
Roller: bir modülü değiştirmek
forum, members ve downloads birer roldür. Bir rolü yalnız bir modül üstlenebilir: aynı rolü bildiren kendi modülünüzü açtığınızda, o rolü tutan modül kapanır. Böylece iki indirme yöneticisi birbirinin üzerine yazmaz ve bir sitenin bizim modülümüzü kendi modülüyle değiştirmesi mümkün olur.
Kendi modülünüz
Bir modül, modules/ altında bir klasör ve bir module.json bildirimidir:
modules/benimisim/
module.json bildirim (gerekli)
src/module.php yalnız modül o sitede açıkken yüklenir
migrations/001-x.sql her biri bir kez, sırayla uygulanır
migrations/001-x.mysql.sql aynı şema MySQL/MariaDB için
themes/block-x.php modülün bloklarının şablonları; her tema adıyla geçersiz kılabilir
lang/tr.json modülün kendi metinlerinin çevirisi
Bildirim modülün hangi tablolara ve yollara dokunduğunu, hangi dosyaları ürettiğini, hangi modüllere ihtiyaç duyduğunu ve hangi rolü üstlendiğini söyler. hisarblok make:module <ad> bütün bunların çalışan bir iskeletini yazar: bildirim, formlu ve silmeden önce soran bir panel ekranı, iki SQL lehçesinde bir tablo, bir kanca, Türkçe çeviri tablosu ve kendi testi.
Bir modülün yapabildikleri:
- panel ekranı ve menü grubu eklemek (her ekran bir yetki bildirir; rol adı sınanmaz),
- sayfa bloğu eklemek,
- sayfa ve dosya yazmak (sitenin sahiplik kurallarına uyarak),
- ziyaretçiden form almak: yalnız
go.phpüzerinden, ortak korumaların arkasında, - ziyaretçiye sayılan bağlantı vermek:
get.phpüzerinden, - kancalarla çekirdeğin davranışına katılmak ve işlem günlüğüne yazmak.
Güvenli modül kuralları
- Ziyaretçiden gelen her şey güvenilmezdir:
h()ile kaçışlayın, metni HTML'e yalnızmarkdown()ile çevirin, bağlantıyıjavascript:vedata:adreslerini reddeden yardımcıyla kurun. - Panel formları CSRF jetonu taşır ve işleyici onu önce denetler.
- Yalnız üzerinde çalışılan siteyle çalışın; istekten gelen bir kimliğin o siteye ait olduğunu sorguda denetleyin. Bir hesap bazı sitelere sınırlanmış olabilir.
- Ziyaretçi uç noktasında oturum yoktur: hız sınırı kullanın, ziyaretçiyi adresiyle değil tuzlu bir özetle tanıyın, mümkünse kayıt yerine toplam saklayın.
- Belge köküne yazılan dosyalar olduğu gibi sunulur: web sunucusunun çalıştıracağı hiçbir şeyi kabul etmeyin.