A'dan Z'ye Tema Geliştirme Master Rehberi

Pro Level Guide

Modern DLE 19.x
Tema Geliştirme Sanatı

Sadece kodlama değil, mimari kuruyoruz. DLE'nin tüm gücünü şablonlarınıza nasıl yansıtacağınızı öğrenin.

1. Klasör ve Dosya Düzeni

Default temada gördüğünüz her şeyi körü körüne kopyalamayın. v19.0 ile statik dosyaların yerini ayırmak güvenlik ve hız için zorunludur.

/templates/TemaAdı/

Sadece .tpl dosyaları burada olur. DLE bunları buradan okur.

/public/temalar/

CSS, JS, Resim ve Fontlar burada olur. Tarayıcı buraya doğrudan erişebilir.

Pro Tip

Sayfa yenilendiğinde eski CSS'lerin kalmaması için asset çağırırken versiyon ekleyin:

href="{THEME}/css/style.css?v=1.2"

2. Dinamik Layout Kontrolü (Görünüm Değiştirme)

Kullanıcıların en çok sorduğu soru: "Ana sayfada poster, iç sayfalarda liste görünümü nasıl yapılır?" Cevabı çok basit: Dinamik Class veya Dinamik Template mantığı.

A. Dinamik Class Yöntemi (CSS Ağırlıklı)

`main.tpl` dosyanızda body veya ana taşıyıcı div'e sayfa ismini class olarak enjekte edin:

<div class="content-wrapper [available=main]home-poster-view[/available] [available=showfull]detail-view[/available]">
    {content}
</div>

CSS'inizde ise şöyle kontrol edin:

/* Normal Liste Görünümü */
.short-story { display: flex; gap: 15px; }

/* Ana Sayfada Poster Görünümü */
.home-poster-view .short-story { display: block; text-align: center; }

B. Dinamik Template Yöntemi (PHP/Etiket Ağırlıklı)

Ana sayfada tamamen farklı bir TPL kullanmak istiyorsanız `{content}` yerine `{custom}` kullanın:

[available=main]
    <!-- Ana sayfada poster tasarımını yükle -->
    {custom template="poster-article" limit="12" cache="yes"}
[/available]

[not-available=main]
    <!-- Diğer sayfalarda standart shortstory.tpl çalışsın -->
    {content}
[/not-available]

3. {custom} Etiketinin Gizli Gücü

Master bir temacı asla sadece `{content}`'e bağlı kalmaz. `{custom}` etiketiyle sitenizi bir portala dönüştürebilirsiniz.

{custom category="1,2,3" template="blocks/top-news" limit="5" order="reads" cache="yes"}
  • order="reads": En çok okunanları, order="date": En yenileri çeker.
  • cache="yes": Hayati önem taşır. Sitenizin hızını 10 kat artırır.
  • fixed="yes": Sadece "Sabitlenen" haberleri getirir (Slider için ideal).

4. Kategoriye Özel Tasarım (Category Split)

Oyun kategorisinde yeşil, Film kategorisinde kırmızı bir tema mı istiyorsunuz? `[category=X]` etiketi yardımınıza koşar.

<!-- Sadece 5 ID'li kategoride özel bir banner göster -->
[category=5]
    <div class="cinema-banner">Sinema Dunyasina Hosgeldiniz!</div>
[/category]

<!-- CSS dosyanızı bile kategoriye göre çağırabilirsiniz -->
[category=10]<link rel="stylesheet" href="{THEME}/css/gaming.css">[/category]

5. engine.css: Temanın Kalp Atışı

Yeni başlayanların en çok yaptığı hata engine.css dosyasını silmektir. Bu dosya DLE'nin motor gücünü görselleştirir.

Neler İçerir?

  • Hız Çubuğu (Speedbar): Breadcrumb stilleri.
  • Sayfalama (Navigation): Alt sayfalar arası geçiş numaraları.
  • Resim Galerisi: Highslide (pop-up resim) efektleri.
  • BB Kodları: Editörden eklenen tablo, alıntı ve kod blokları.
  • Sistem Mesajları: Hata ve bilgi kutuları.

Müdahale Edilmeli mi?

Dosyayı tamamen değiştirmek yerine, kendi style.css dosyanızda engine.css sınıflarını (örneğin .navigation) ezerek (override) temanıza uydurmalısınız.

Altın Kural: engine.css yoksa, DLE'nin %40 görsel fonksiyonu bozuk görünür.

6. Kullanıcı Grubu ve Yetki Kontrolü

Üyelerinize veya ziyaretçilerinize farklı içerikler göstermek için DLE'nin grup etiketlerini kullanın. Bu, "Üyelere Özel" alanlar yaratmanızı sağlar.

[group=1,2]
    <div class="admin-tools">Sadece Admin ve Editor görebilir.</div>
[/group]

[not-group=5]
    <div class="member-content">Ziyaretçiler hariç herkes görebilir.</div>
[/not-group]

7. Statik Sayfalara Özel Tasarım

Hakkımızda sayfasıyla İletişim sayfasının aynı static.tpl'yi kullanması sıkıcı olabilir. İsme özel kontrol geliştirin:

[static=iletisim]
    <!-- Sadece 'iletisim' isimli statik sayfada Google Maps göster -->
    <iframe src="..."></iframe>
[/static]

[not-static=iletisim]
    <!-- İletişim dışındaki statik sayfalarda standart içerik -->
    {static}
[/not-static]

8. Modern Oylama (Like / Dislike)

DLE 18.x sonrası yıldızlı oylama yerine Like/Dislike sistemi standart hale geldi. Şablonunuzda (shortstory.tpl veya fullstory.tpl) bunu en şık haliyle şöyle kurgulayabilirsiniz:

Beğeni (Plus) Modülü
[rating-type-4]
    [rating-plus]
        <i class="fas fa-thumbs-up"></i> {rating}
    [/rating-plus]
[/rating-type-4]
Beğenmeme (Minus) Modülü
[rating-type-4]
    [rating-minus]
        <i class="fas fa-thumbs-down"></i> {dislikes}
    [/rating-minus]
[/rating-type-4]

Not: [rating-type-4] etiketi, yönetim panelinden "Like/Dislike" sistemi seçildiğinde aktif olur. Eğer yıldız sistemi seçiliyse bu alan boş görünür.

9. İnteraktif Kullanıcı Arayüzü (Dialog & Alerts)

DLE'de haber silme, şikayet etme veya hata mesajları gibi işlemler "UI Dialogue" kutuları ile yapılır. Bu kutuların şık görünmesi temanızın profesyonelliğini belirler.

DLEBox ve DLEconfirm

DLE, dahili olarak bir modal motoruyla gelir. Bir butona basıldığında çıkan "Emin misiniz?" kutusu veya Hata pencereleri bu sistemdir.

Önemli: Bunların çalışması için main.tpl dosyanızda mutlaka {AJAX} etiketi bulunmalıdır.

Teknik Sınıflar (Default Tema)

Default temada kullanılan ana sınıflar şunlardır. Bunları style.css dosyanızda ezebilirsiniz:

  • .ui-dialog: Ana taşıyıcı pencere.
  • .ui-dialog-titlebar: Pencere başlık çubuğu.
  • .ui-dialog-title: Başlık metni alanı.
  • .ui-dialog-content: Mesajın veya formun olduğu alan.
  • .ui-button: Pencere altındaki butonlar.

Uzman Tavsiyesi: Default temada diyalog başlıkları mavi (#517fa4) gelir. Kendi temanıza uydurmak için .ui-dialog-titlebar sınıfına kendi ana renginizi vermeyi unutmayın.

5. Performance & Asset Management

DLE 19.x'te hız her şeydir. Temanızı uçuracak 3 kural:

  • Lazy Loading Tüm img taglarına loading="lazy" ekleyin.
  • WebP Support Resim kodlarınızda WebP formatını kontrol eden DLE etiketlerini kullanın.
  • Minimize AJAX {AJAX} etiketini body sonuna koyarak render kilidini açın.

6. Standart Dizin Yolları Tablosu

Klasör / Dosya v19.0+ Standart Konumu Önerilen Çağırma
Şablon Dosyaları /templates/TemaAdı/*.tpl Sistem tarafından otomatik
CSS / Stil /public/theme/css/style.css {THEME}/css/style.css
JavaScript /public/theme/js/scripts.js {THEME}/js/scripts.js
Resim / İkon /public/theme/images/ {THEME}/images/logo.png

Ustalık Artık Sizin Elinizde!

"İyi bir tema sadece güzel görünmez, DLE motoruyla kusursuz bir uyum içinde dans eder."