HexabeeNovel
RC Sürüm: Bu site geliştirilme aşamasındadır. Hata/öneri için buradan bildirimde bulunun.
2026 - 2027 İlk Öğretim Yılı Başladı

Tema Yapımı

Tema = themes/<slug>/ klasörü. Çekirdek şablonları ezmez, üzerine biner: temada dosya varsa o, yoksa includes/ kullanılır (cms_theme_path()).

İskelet

themes/ornek/
  theme.json     # ad + açıklama (Panel → Temalar listesi buradan)
  style.css      # ana stil (önerilir)
  functions.php  # kanca kayıtları (opsiyonel)
  header.php     # komple üst şablon (opsiyonel, nadiren gerekir)
  footer.php     # komple alt şablon (opsiyonel, nadiren gerekir)

theme.json:

{"name": "Örnek", "description": "Tek cümlelik tanıtım.", "version": "1.0.0", "author": "Hexabee"}

Önerilen yol: CSS + kanca

Komple header.php kopyalamak yerine stil + kanca yeter (bakınız: Pixel Hive):

<?php
// themes/ornek/functions.php — sadece bu tema etkinken yüklenir
add_action('cms_head', function() {
    $css = HEXABEE_THEME_DIR . '/ornek/style.css';
    $v = is_file($css) ? filemtime($css) : 1;
    echo '<link rel="stylesheet" href="/themes/ornek/style.css?v=' . $v . '">' . "\n";
});

style.css honey.css'ten sonra yüklenir — eşit özgüllükte tema kazanır. Kapatma kancası: cms_foot (</body> öncesi).

Tema seçimi

Katman Kaynak Etki
Site varsayılanı data/theme.json + Panel → Temalar Herkese
Ziyaretçi seçimi Footer'daki 🎮 seçici → hx_theme çerezi Sadece o ziyaretçi, varsayılanı ezmez

cms_effective_theme() ikisini çözer; default teması boş klasördür — her şeyi includes/'tan devralır, referans alınabilir.

Kurallar

  • Dış font/CDN yok: CSP font-src 'self' kilitlidir, sistem fontu + monospace kullan.
  • prefers-reduced-motion varsa blink/scanline gibi efektleri kapat.
  • Tema, kapalıyken yüklenmez — fonksiyonlarını function_exists ile sarmana gerek yok, ama çakışan isim kullanma.
Soru Sor