Her tenant kendi teması: t-1001, t-2, t-3...
t-{id} = Tenant teması. Sadece özel dosyalar burada.
simple = Fallback (mevcut, zaten var). t-{id}'de yoksa buradan alır.
Örnek: t-3/homepage.blade.php var → onu kullan, t-3/blog/show.blade.php yok → simple'dan al
resources/views/themes/ │ ├── simple/ ← FALLBACK (mevcut, dokunma) │ ├── layouts/ │ │ ├── app.blade.php │ │ ├── header.blade.php │ │ └── footer.blade.php │ ├── homepage.blade.php │ └── ... │ ├── t-1001/ ← Muzibu override │ ├── homepage.blade.php ← Özel anasayfa │ └── config.json ← Renkler │ ├── t-2/ ← İxtif override │ ├── homepage.blade.php │ └── config.json │ └── t-3/ ← YENİ TENANT ├── homepage.blade.php ← Özel anasayfa ├── config.json ← Renkler └── (blog/, page/ yok → simple'dan gelir)
t-3 için sadece override dosyaları oluşturulur. Geri kalan simple'dan gelir.
@extends('themes.simple.layouts.app')
@section('content')
{{-- Hero --}}
<section class="bg-gradient-to-r from-primary to-secondary py-20">
<div class="container mx-auto px-4 text-center text-white">
<h1 class="text-4xl md:text-6xl font-bold mb-4">
{{ setting('site_slogan') ?? setting('site_name') }}
</h1>
<p class="text-xl opacity-90">
{{ setting('site_description') }}
</p>
</div>
</section>
{{-- İçerik buraya gelir --}}
<section class="py-16">
<div class="container mx-auto px-4">
{{-- Dinamik içerik --}}
</div>
</section>
@endsection
{
"name": "t-3",
"title": "Yeni Tenant",
"colors": {
"primary": "#10b981",
"secondary": "#6366f1"
}
}
Sadece değişen değerler. Geri kalan simple'dan miras alınır.
t-3 (yeni tenant): 1. themes/t-3/homepage.blade.php → VARSA kullan 2. themes/t-3/blog/show.blade.php → YOK 3. themes/simple/blog/show.blade.php → simple'dan al ✓ Muzibu (t-1001): 1. themes/muzibu/homepage.blade.php → VARSA kullan 2. Modules/*/themes/muzibu/ → Kendi modül view'ları 3. themes/simple/ → Yoksa simple İxtif (t-2): 1. themes/ixtif/homepage.blade.php → VARSA kullan 2. Modules/*/themes/ixtif/ → Kendi modül view'ları 3. themes/simple/ → Yoksa simple Her tema kendi fallback'ine düşer. Birbirine karışmaz.
themes/t-3/
├── config.json ← Renkler
└── homepage.blade.php ← Özel anasayfa
blog/, page/, shop/ yok → simple'dan gelir
Admin → Sayfalar → Yeni Sayfa
Bir sayfayı anasayfa yapmak için:
Sayfalar → Düzenle → "Anasayfa olarak ayarla" ✓
Bu sayfa is_homepage = true olur ve / URL'inde görünür.
Anasayfa:
themes/t-3/homepage.blade.php → Özel tasarım
└── İçerik: Admin'den girilen $item->content
Diğer Sayfalar:
themes/simple/page/show.blade.php → Otomatik kullanılır
└── t-3'te page/ klasörü yok → simple'dan gelir
{{-- themes/simple/page/show.blade.php --}}
@extends('themes.simple.layouts.app')
@section('content')
<article class="container mx-auto px-4 py-8">
<h1 class="text-4xl font-bold mb-6">
{{ $item->title }}
</h1>
<div class="prose dark:prose-invert max-w-none">
{!! $item->content !!}
</div>
</article>
@endsection
t-3 için özel "Hakkımızda" sayfası istiyorsa:
themes/t-3/page/show.blade.php → Tüm sayfalar için themes/t-3/page/about.blade.php → Sadece "about" slug'ı için
Yoksa simple'dan gelir, sorun yok.
Admin → Menüler → Yeni Menü
Header'da kullanım:
{{-- layouts/header.blade.php --}}
@foreach($menuItems ?? [] as $item)
<a href="{{ $item->url }}">{{ $item->title }}</a>
@endforeach
Sadece 2 dosya: homepage + config. Geri kalan simple'dan gelir.