Mevcut durum, hedef yapı ve yol haritası
Ne istiyorsun?
İyi Haber
Sistemde bu yapı zaten var! ThemeService denen bir servis tam olarak bunu yapıyor. Sadece "simple" temasını mükemmelleştirmek ve eksik modülleri tamamlamak gerekiyor.
resources/views/themes/ ├── simple/ ← Fallback (varsayılan) │ ├── layouts/ │ │ ├── app.blade.php │ │ ├── header.blade.php │ │ └── footer.blade.php │ └── index.blade.php │ ├── muzibu/ ← Müzik tenant (1001) │ ├── layouts/ │ ├── homepage.blade.php │ └── components/ │ └── ixtif/ ← Endüstriyel tenant (2) ├── layouts/ └── index.blade.php
Modules/{Modül}/resources/views/themes/
├── simple/
│ ├── index.blade.php
│ └── show.blade.php
│
├── muzibu/
│ └── (override varsa)
│
└── ixtif/
└── (override varsa)
Örnek: Muzibu'da blog detay sayfası açılıyor
themes/muzibu/blog/show.blade.php
var mı?
themes/simple/blog/show.blade.php
yoksa buna düş
front/blog/show.blade.php
son çare
Tenant teması varsa → Onu kullan
Yoksa → Simple'a düş
O da yoksa → Front klasörü
themes/ ├── tenant-1001/ ← Muzibu │ ├── homepage.blade.php ← Özel anasayfa │ └── modules/ │ └── blog/ │ └── show.blade.php ← İsterse override │ ├── tenant-2/ ← İxtif │ ├── homepage.blade.php ← Özel anasayfa │ └── modules/ │ └── product/ │ └── show.blade.php ← İsterse override │ └── simple/ ← Altın Standart (Fallback) ├── homepage.blade.php ← Varsayılan anasayfa ├── layouts/ │ ├── app.blade.php │ ├── header.blade.php │ └── footer.blade.php └── modules/ ├── blog/ │ ├── index.blade.php │ └── show.blade.php ├── page/ │ └── show.blade.php ├── shop/ │ ├── index.blade.php │ └── show.blade.php └── portfolio/ ├── index.blade.php └── show.blade.php
| Modül | index | show | Diğer | Not |
|---|---|---|---|---|
| Blog | tag.blade.php var | |||
| Page | - | Temel var | ||
| Shop | Cart, checkout eksik olabilir | |||
| Portfolio | - | Temel var | ||
| Announcement | - | Temel var | ||
| Favorite | - | - | Kontrol gerekli | |
| ReviewSystem | - | - | Kontrol gerekli | |
| Payment | - | checkout, success var |
Dosya: app/Services/ThemeService.php
Ana tema yöneticisi. Fallback sistemini çalıştıran servis.
getActiveTheme() → Tenant'ın aktif temasını döndürür getThemeViewPath() → View path'i çözer (fallback dahil) setupThemeViews() → View::addLocation() ile tema yolunu ekler clearThemeCache() → Redis cache temizler
// Örnek: Blog show sayfası, aktif tema = "ixtif" 1. blog::themes.ixtif.show → Aranıyor... 2. blog::themes.simple.show → BULUNDU ✓ 3. blog::front.show → (Kullanılmaz)
app/Services/ThemeService.php - Tema engineapp/Repositories/ThemeRepository.php - Tema repositoryModules/ThemeManagement/App/Models/Theme.php - Tema modeliapp/Models/Tenant.php - Tenant-tema bağlantısı (theme_id)resources/views/themes/simple/ - Fallback tematheme:tenant_{id}Tüm modüller için eksiksiz, güzel tasarımlı simple view'ları oluştur. Bu "altın standart" olacak.
themes/simple/modules/{modül}/ yapısını tüm modüller için oluştur.
themes/tenant-1001/, themes/tenant-2/ yapısına geç. Sadece homepage ve override'ları içersin.
Yeni klasör yapısına göre view resolution mantığını güncelle.
Tüm tenant'larda test et, yeni tenant ekleme rehberi hazırla.
Mevcut sistem istediğin yapıyı zaten destekliyor. ThemeService fallback mekanizması çalışıyor. Yapılması gereken: Simple temasını "altın standart" haline getirmek ve klasör yapısını standartlaştırmak. Kod değişikliği minimal olacak.