v21 - Icerik Olusturma Sistemi Eklendi

t-{id} Tema Yapisi

Multi-Tenant Tema Sistemi - Kapsamli Referans Dokumani

1. Felsefe

t-{id} = Tenant temasi. Sadece ozel dosyalar burada.

simple = Fallback (mevcut, zaten var). t-{id}'de yoksa buradan alir.

Ornek: t-3/homepage.blade.php var -> onu kullan, t-3/blog/show.blade.php yok -> simple'dan al

2. View Path Oncelik Sirasi

KRITIK!

DOGRU Oncelik Sirasi (ThemeService.php)

1
resources/views/themes/{tema}/{view}

Ana tema klasoru - TEK DOSYA PRENSIBI - ONCELIKLI!

2
Modules/{Modul}/views/themes/{tema}/{view}

Modul ici tema - Fallback (resources'da yoksa)

3
Modules/{Modul}/views/themes/simple/{view}

Simple tema fallback - MODUL ICINDE

4
{modul}::front.{view}

Son care - Modul front klasoru

3. Container Pattern (ixtif Standardi)

Basit Anlatim

Tum sayfalarda ayni container genisligi kullanilmali. ixtif.com header genisligi referans alinmistir.

DOGRU: ixtif Standardi

{{-- TUM sayfalar bu container'i kullanmali --}}
<div class="container mx-auto px-4 sm:px-4 md:px-2">
    ...
</div>

// Mobil (0-767px): px-4 (16px)
// Tablet (768px+): px-4 (16px)
// Desktop (md/768px+): px-2 (8px) - daha dar padding

YANLIS: Eski Genis Padding

{{-- YANLIS! Fazla padding, tutarsiz --}}
<div class="container mx-auto px-3 sm:px-6 md:px-8 lg:px-12 xl:px-16 2xl:px-20">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">

{{-- DOGRU! --}}
<div class="container mx-auto px-4 sm:px-4 md:px-2">

4. Minimal Subheader Pattern

Basit Anlatim

Gradient header KALDIRILDI! Yerine minimal subheader: Breadcrumb + H1 baslik, gri arkaplan.

DOGRU: Minimal Subheader

{{-- MINIMAL SUBHEADER --}}
<section class="bg-gray-50 dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700">
    <div class="container mx-auto px-4 sm:px-4 md:px-2 py-4">
        {{-- Breadcrumb --}}
        <nav class="text-sm text-gray-500 dark:text-gray-400 mb-2">
            @foreach($breadcrumbsArray as $index => $crumb)
                ...
            @endforeach
        </nav>
        {{-- H1 Baslik --}}
        <h1 class="text-2xl md:text-3xl font-bold font-heading text-gray-900 dark:text-white">
            {{ $title }}
        </h1>
    </div>
</section>

5. Breakpoint Sistemi

Basit Anlatim

Header ve navigasyon icin xl (1280px) breakpoint kullaniyoruz. lg (1024px) kullanmak tablet boyutlarinda sorunlara yol acar!

Tailwind Breakpoint'leri

ClassPikselKullanim
sm:640pxBuyuk telefonlar
md:768pxTablet dikey
lg:1024pxTablet yatay / Kucuk laptop
xl:1280pxHEADER BREAKPOINT!
2xl:1536pxBuyuk ekranlar

6. Grid Sistemi (Modul Tipine Gore)

Basit Anlatim

Grid yapisi modul tipine gore degisir. Gorsel agirlikli modullerde 2 kolon, text agirlikli modullerde 1 kolon mobilde daha okunabilir.

Gorsel Agirlikli Moduller

Sadece gorsel + baslik, az text

Servicegrid-cols-2 md:grid-cols-3
Portfoliogrid-cols-2 md:grid-cols-3
Galerigrid-cols-2 md:grid-cols-3 lg:grid-cols-4

Text Agirlikli Moduller

Baslik + aciklama + tarih + okuma suresi

Bloggrid-cols-1 md:grid-cols-2 lg:grid-cols-3
Pagegrid-cols-1 md:grid-cols-2 lg:grid-cols-3
Announcementgrid-cols-1 md:grid-cols-2 lg:grid-cols-3

7. Typography (Prose Styling)

DOGRU: Prose Styling

{{-- Icerik alanlari icin --}}
<div class="prose prose-base max-w-none font-body dark:prose-invert
          prose-headings:font-heading prose-headings:text-gray-900
          prose-p:text-gray-600 dark:prose-p:text-gray-300
          prose-a:text-primary-600 hover:prose-a:underline">
    @parsewidgets($body ?? '')
</div>

8. PWA + instant.page + Service Worker

Basit Anlatim

Sayfalar daha hizli acilir, site uygulama olarak yuklenebilir ve offline calisabilir. Tum bunlar otomatik olarak temalarda aktif.

instant.page

Link'lere mouse ile geldiginde sayfa arka planda onceden yuklenir.

PWA Manifest

Tarayicida "Uygulamayi Yukle" butonu gosterir.

Service Worker

Sayfalari onbellege alir, offline destek saglar.

9. UI/UX Standartlari

Basit Anlatim

Sitede dinamizm ve guzellik icin hover efektleri, animasyonlu gradient text, ikon gecisleri kullanilir. Ancak ASLA scale/zoom/ziplama efekti KULLANMA - sadece renk, border ve shadow degisimi!

Lazy Loading

Tum gorsellerde loading="lazy" attribute kullan. Hero haric!

YASAK Hover Efektleri

hover:scale-*, hover:-translate-y-* - KULLANMA!

Sadece: hover:border-primary-500, hover:shadow-lg

11. Settings Pattern

Iletisim Ayarlari

KeyAciklama
contact_phone_1Ana telefon (sabit)
contact_phone_2Mobil telefon
contact_whatsapp_1WhatsApp numarasi
contact_email_1E-posta

13. Dinamik Route Sistemi

Tenant bazli URL yonetimi - HARDCODE YASAK!

Basit Anlatim

Her tenant (site) kendi URL yapisini ozellestirebilir. Ornegin Blog modulu varsayilan /blog yerine /haberler olabilir. Bu yuzden ASLA href="/blog" gibi hardcode URL yazilmaz!

ASLA YAPMA!

// YANLIS - Hardcode URL
<a href="/blog">Blog</a>
<a href="/hizmetler/web-tasarim">...</a>
<a href="/sayfa/hakkimizda">...</a>

// DOGRU - Dinamik URL
<a href="{{ module_locale_url('Blog', 'index') }}">...</a>
<a href="{{ $service->getUrl() }}">...</a>
<a href="{{ $page->getUrl() }}">...</a>

Slug Key Referansi

Modul Key Varsayilan
Blogindexblog
Serviceindexhizmetler
Pageshowsayfa
Portfolioindexportfolyo

14. Leonardo AI Gorsel Uretim Sistemi

11 Altin Kural Formulu + Site Renk Entegrasyonu

Basit Anlatim (Herkes Icin)

Leonardo AI, siteler icin profesyonel gorseller ureten yapay zeka sistemidir. Basit bir aciklama verirsin ("Forklift depo ici"), sistem bunu 11 Altin Kural ile gercek fotograf gibi gorunen detayli bir talimata cevirir.

11 ALTIN KURAL FORMULU

1 Photo Type - "Photo of", "Editorial photograph"
2 Subject + Action - Mikro hikaye
3 Environment - Mekan + zaman
4 Camera Angle - Cekim acisi
5 Composition - Rule of thirds
6 Lighting - Golden hour, Rembrandt
7 Camera + Lens - Canon EOS R5, 85mm f/1.4
8 Film Stock - Kodak Portra 400
9 Imperfections - Lens dust, grain (EN KRITIK!)
10 Mood - Atmosfer + duygu
11 Post-Processing - Teal and orange grading
Hero

1472x832 (yatay)

Service

1024x1024 (kare)

Blog

1472x832 (yatay)

15. Icerik Olusturma Sistemi

Anasayfa Haric Tum Sayfalar - DB Body Prensibi

YENI v21!

ALTIN KURAL: DB BODY PRENSIBI

HARDCODE IF/ELSE KESINLIKLE YASAK!

Tum sayfa icerikleri veritabanindaki pages.body alaninda saklanir.

show.blade.php dosyasi sadece @parsewidgets($body) ile icerigi render eder.

YANLIS

@if($slug == 'hakkimizda')
    <div>Hakkimizda icerigi...</div>
@elseif($slug == 'iletisim')
    <div>Iletisim icerigi...</div>
@endif

DOGRU

{{-- show.blade.php --}}
<div class="page-content">
    @parsewidgets($body ?? '')
</div>

{{-- Icerik DB'de! --}}

Sayfa Yapisi (Anatomy)

Her sayfa birbiri ardina gelen section'lardan olusur. Her section'in kendine ozgu arka plan rengi ve ic yapisi vardir.

<!-- SAYFA YAPISI -->

<section class="bg-gradient-to-br from-slate-900 via-slate-800 to-primary-900 py-20">
    <!-- HERO SECTION -->
</section>

<section class="bg-white dark:bg-dark-900 py-16">
    <!-- CONTENT SECTION 1 -->
</section>

<section class="bg-slate-50 dark:bg-dark-800 py-16">
    <!-- CONTENT SECTION 2 (alternating bg) -->
</section>

<section class="bg-gradient-to-br from-primary-600 to-primary-800 py-16">
    <!-- CTA SECTION -->
</section>

Tasarim Bilesenleri (Components)

Hero Section

Sayfa basinda gradient arka planli, buyuk baslikli bolum

bg-gradient-to-br from-slate-900 via-slate-800 to-primary-900

Stats Cards

Istatistik kartlari: 15+ Proje, 7/24 Destek vb.

grid grid-cols-2 md:grid-cols-4 gap-4

Content Grid

2 kolonlu icerik: Sol metin, sag gorsel/liste

grid md:grid-cols-2 gap-8 items-center

Values Grid

Degerlerimiz, ozellikler, avantajlar listesi

grid grid-cols-2 md:grid-cols-3 gap-6

CTA Section

Aksiyon cagirisi: "Bizimle Iletisime Gecin"

bg-gradient-to-br from-primary-600 to-primary-800

Icon Cards

Ikonlu kartlar: Misyon, Vizyon, Hizmetler

w-16 h-16 bg-primary-100 rounded-xl

Ornek: Hakkimizda Sayfasi Yapisi

Profesyonel bir hakkimizda sayfasinin bolum siralaması:

1
Hero Section

Gradient arka plan, buyuk baslik, kisa aciklama

2
Stats Cards

15+ Referans Proje, Kapsamli Hizmet, Profesyonel Kadro, 7/24 Destek

3
Hakkimizda Content

"Biz Kimiz?", Modern Yaklasimimiz, Kalite ve Guvenilirlik

4
Misyon & Vizyon

Yan yana 2 kart: Misyonumuz ve Vizyonumuz

5
Degerlerimiz

6 deger ikonlu kartlar: Bilgi, Guvenilirlik, Verimlilik, Basari, Arastirma, Mevzuat Uyumu

6
Neden Biz?

6 avantaj kartları: Uzman Kadro, Modern Teknoloji, Zamaninda Teslimat...

7
Hizmet Alanlari

Service kategorilerine linkler

8
CTA Section

"Birlikte Calisalim" - Iletisim butonu

Ornek: Iletisim Sayfasi Yapisi

1
Hero Section

Gradient arka plan, "Bizimle Iletisime Gecin" basligi

2
Iletisim Kartlari

3'lu grid: Adres, Telefon, E-posta kartlari

3
2 Kolonlu Alan

Sol: Iletisim formu (widget), Sag: Harita veya ek bilgiler

4
Calisma Saatleri

Hafta ici/sonu calisma saatleri tablosu

Icerik Kaynaklari

ICERIK.md Dosyalari

Her tenant icin icerik kaynagi olarak *_ICERIK.md dosyasi kullanilir:

  • UNIMAD_MADENCILIK_ICERIK.md - UNIMAD icerikleri
  • YILDIRIM_PANJUR_ICERIK.md - Yildirim Panjur icerikleri
  • IXTIF_ICERIK.md - ixtif icerikleri

Bu dosyalar: Hakkimizda metni, Misyon/Vizyon, Hizmet aciklamalari, SSS sorulari icerir.

Tailwind Pattern'leri

Section Arka Planlari (Alternatif)

Light Sections:

bg-white dark:bg-dark-900

Gray Sections:

bg-slate-50 dark:bg-dark-800

Hero/CTA Gradient:

bg-gradient-to-br from-primary-600 to-primary-800

Dark Footer:

bg-slate-900 dark:bg-dark-950

Spacing (py)

Hero Section py-20 veya py-24
Content Section py-16
CTA Section py-16
Grid Gap gap-6 veya gap-8

Typography

Section Basligi text-3xl md:text-4xl font-bold font-heading
Alt Baslik text-xl font-semibold
Paragraf text-gray-600 dark:text-gray-300 leading-relaxed
Badge/Label text-primary-600 font-semibold text-sm uppercase tracking-wider

Veritabanina Kayit

SQL ile Icerik Guncelleme

-- Tenant DB'ye baglan
USE tenant_unimadmadencilik_8a32cf;

-- Hakkimizda sayfasini guncelle
UPDATE pages
SET body = '{"tr": "<section class=\"...\">...HTML ICERIK...</section>"}'
WHERE slug->>'$.tr' = 'hakkimizda';

-- veya PHP Tinker ile
$page = Page::where('slug->tr', 'hakkimizda')->first();
$page->body = ['tr' => $htmlContent];
$page->save();

IPUCU: JSON Escape

HTML'i JSON'a koyarken " karakterlerini \" ile escape et. Tailwind class'larinda ' kullanilabilir.

Referans Siteler

yildirimpanjur.com/page/hakkimizda

Hakkimizda sayfa yapisi referansi

unimad.tuufi.com/page/hakkimizda

UNIMAD Madencilik hakkimizda

EK A: Page Modulu Kullanimi

Page modulu, sitedeki statik sayfalari yonetir: Hakkimizda, Iletisim, Gizlilik Politikasi vb.

Veritabani Alanlari

titleJSONSayfa basligi
slugJSONURL slug
bodyJSONHTML icerik (TUM TASARIM BURADA!)
is_homepageBOOLAnasayfa mi?

EK B: Service Modulu Kullanimi

Service modulu, sirketin sundugu hizmetleri sergiler. Her hizmetin ayri sayfasi, gorseli ve kategorisi olabilir.

Media

  • hero - KARE 1024x1024
  • gallery - Ek gorseller

URL

/hizmetler/{slug}

EK C: Blog Modulu Kullanimi

Blog modulu, haber, makale ve icerik paylasimi icin kullanilir. Zamanlanmis yayinlama, kategori, etiket, FAQ ve HowTo schema destegi vardir.

YAYINDA

is_active=true, published_at=past

ZAMANLANMIS

is_active=true, published_at=future

TASLAK

is_active=false

EK D: Icerik Girisi Workflow

Kullanici icerik metnini verir, Claude sisteme girer, gorsel uretir ve media tablosuna kaydeder.

1

Kullanici Icerik Verir

ICERIK.md dosyasindan veya direkt metin

2

Claude HTML Tasarim Uretir

Tailwind ile section'lar, kartlar, gridler

3

DB Body'ye Kaydeder

pages.body JSON alanina HTML eklenir

4

Leonardo AI Gorsel Uretir (Opsiyonel)

11 Altin Kural ile profesyonel gorsel

5

Cache Temizle & Test

php artisan cache:clear && view:clear

Modul Karsilastirma

Ozellik Page Service Blog
Kategori
Etiketler
Anasayfa Olabilir
Gorsel Boyutu 1472x832 1024x1024 1472x832