🎨 Tema Fallback Sistemi

📅 Tarih: 2025-11-24 | 🎯 Hedef: Tüm Modüller | 📊 Durum: Planlama Aşaması

🔴 Mevcut Sorun

Ne Oluyor?

Yeni bir tema oluşturulduğunda (örn: muzibu), her modülde o temanın view dosyaları yoksa site çöküyor.

Hata: "View [front.homepage] not found"

Neden Sorun?

  • Her modülde tema klasörü oluşturmak gerekiyor
  • 15+ modül için 15+ klasör = Çok fazla dosya kopyalama
  • Unutulan bir modül = Site çöker
  • Bakım zorluğu - tema güncellemesi tüm kopyaları etkiler

✅ Çözüm: Akıllı Fallback Sistemi

Temel Mantık

View bulunamazsa otomatik olarak simple temasına düş. Simple de yoksa front/ klasörüne düş.

Fallback Zinciri

1️⃣ Aktif Tema (örn: muzibu)
↓ Bulunamadı mı?
2️⃣ Fallback Tema (simple)
↓ O da yoksa?
3️⃣ Modül Default (front/)

Bu sayede:

🎯 Uygulama Planı

1. ThemeService Genişletme Yüksek Öncelik

Ne Yapılacak: getViewWithFallback() metodu eklenecek

Nasıl Çalışacak:

  • Önce aktif tema view'ını ara
  • Yoksa simple temasında ara
  • O da yoksa front/ klasöründe ara
  • Hiçbiri yoksa hata fırlat (geliştirici uyarısı)

Dosya: app/Services/ThemeService.php

2. Blade Directive Oluşturma Yüksek Öncelik

Ne Yapılacak: @themeView() ve @themeInclude() directive'leri

Nasıl Çalışacak:

  • Blade'de @themeView('homepage') yazılır
  • Otomatik fallback zinciri uygulanır
  • Mevcut @include yerine kullanılır

Dosya: app/Providers/AppServiceProvider.php

3. Modül Kontrolcülerini Güncelleme Orta Öncelik

Ne Yapılacak: Tüm kontrolcülerde view çağrısı standardize edilecek

Etkilenen Modüller:

  • Page, Blog, Shop, Portfolio
  • Contact, FAQ, Team, Service
  • Gallery, Slider, Testimonial
  • Muzibu (özel modül)

Mevcut try-catch blokları kaldırılacak, ThemeService fallback'i yönetecek.

4. Layout Include Güvenliği Orta Öncelik

Ne Yapılacak: Header, footer, sidebar include'ları güvenli hale gelecek

Nasıl Çalışacak:

  • @include("themes.{$theme}.layouts.header") yerine
  • @themeInclude('layouts.header') kullanılacak
  • Fallback zinciri layout'lara da uygulanacak

5. Simple Tema Tamamlama Orta Öncelik

Ne Yapılacak: Simple teması tüm modülleri kapsayacak şekilde tamamlanacak

Neden: Fallback teması olduğu için her view'ın simple versiyonu olmalı

  • Minimal, temiz tasarım
  • Her modül için temel view'lar
  • Kolay özelleştirilebilir yapı

📁 Hedef Dosya Yapısı

Modules/Page/resources/views/
├── front/                    ← Son fallback (her zaman var)
│   ├── index.blade.php
│   ├── show.blade.php
│   └── homepage.blade.php
│
└── themes/
    ├── simple/               ← Ana fallback tema
    │   ├── index.blade.php
    │   ├── show.blade.php
    │   └── homepage.blade.php
    │
    ├── ixtif/                ← Tenant 2 özel
    │   └── homepage.blade.php (özelleştirilmiş)
    │
    └── muzibu/               ← Tenant 1001 özel
        └── (boş olabilir - simple'a fallback)
                

📊 Beklenen Sonuçlar

Kriter Öncesi Sonrası
Yeni tema ekleme 15+ modülde klasör oluştur Sadece özel view'lar yeterli
View bulunamadı hatası Site çöker (500) Otomatik fallback
Bakım kolaylığı Her temada aynı dosyalar Merkezi simple tema
Tenant izolasyonu Tenant'a özel dosya zorunlu İsteğe bağlı özelleştirme
⚠️ Dikkat: Bu değişiklik tüm frontend view rendering'i etkiler. Aşamalı test gerekli.