Çıplak Tema

t-{id} Tema Yapısı

Her tenant kendi teması: t-1001, t-2, t-3...

Felsefe

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

Çıplak Tema Yapısı

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)

Dosya İçerikleri

t-3 için sadece override dosyaları oluşturulur. Geri kalan simple'dan gelir.

t-3/homepage.blade.php

@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

t-3/config.json

{
    "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.

ThemeService Fallback Sırası

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.

Yeni Tenant = 2 Dosya

themes/t-3/
├── config.json           ← Renkler
└── homepage.blade.php    ← Özel anasayfa

blog/, page/, shop/ yok → simple'dan gelir

Sayfa Oluşturma (Page Modülü)

1. Admin Panelden Sayfa Oluştur

Admin → Sayfalar → Yeni Sayfa

  • Başlık: Sayfa adı
  • Slug: URL (otomatik veya manuel)
  • İçerik: Sayfa içeriği (HTML/Markdown)
  • Anasayfa mı?: Evet ise homepage olur
  • Aktif: Yayında mı?

2. Anasayfa Belirleme

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.

3. Tema ile İlişki

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

4. Sayfa View Yapısı

{{-- 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

5. Özel Sayfa Tasarımı İsterse

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.

Menü Oluşturma

Admin → Menüler → Yeni Menü

  • Konum: header, footer, sidebar
  • Öğeler: Sayfa, URL, Kategori ekle
  • Sıralama: Sürükle-bırak

Header'da kullanım:

{{-- layouts/header.blade.php --}}
@foreach($menuItems ?? [] as $item)
    <a href="{{ $item->url }}">{{ $item->title }}</a>
@endforeach

t-3 Tema Checklist

Klasör

Dosyalar

Test

Sadece 2 dosya: homepage + config. Geri kalan simple'dan gelir.