← Tüm Raporlar

📄 Landing Page Sistemi

📅 31 Ocak 2026 🏷️ Sistem Tasarımı v1.0

📝 Basit Anlatım (Herkes İçin)

Ne yapıyor? Muzibu.com'daki işletmelerin (tenant'ların) özel kampanya sayfaları oluşturmasını sağlayan bir sistem.

Neden önemli?

  • Her işletme kendi kampanya sayfalarını oluşturabilir
  • Bu sayfalar ana siteden tamamen bağımsız çalışır
  • Özel tasarımlar yapılabilir (Black Friday, Yılbaşı kampanyası vb.)

Nasıl çalışıyor?

Kullanıcı muzibu.com/l/kampanya-adi adresine girdiğinde, sistem veritabanından bu kampanyayı bulur ve özel tasarlanmış sayfayı gösterir.

🔧 Teknik Detaylar (Geliştiriciler İçin)

📁 Klasör Yapısı

Modules/Landing/
├── resources/
│   └── views/
│       └── pages/
│           ├── 1001/                     # Tenant ID (Muzibu)
│           │   ├── yeni-yil-kampanya/
│           │   │   └── homepage.blade.php
│           │   ├── black-friday/
│           │   │   └── homepage.blade.php
│           │   └── ucretsiz-deneme/
│           │       └── homepage.blade.php
│           └── 1002/                     # Başka tenant
│               └── bahar-kampanya/
│                   └── homepage.blade.php

Format: {MODULE}/resources/views/pages/{TENANT_ID}/{SLUG}/homepage.blade.php

🗄️ Veritabanı Yapısı

Tablo: landings (Tenant Database)

CREATE TABLE landings (
    id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,           -- "Yeni Yıl Kampanyası"
    slug VARCHAR(255) UNIQUE NOT NULL,    -- "yeni-yil-kampanya"
    blade_path VARCHAR(500) NOT NULL,     -- "1001/yeni-yil-kampanya/homepage"
    meta_title VARCHAR(255),              -- SEO başlık
    meta_description TEXT,              -- SEO açıklama
    is_active BOOLEAN DEFAULT 1,
    created_at TIMESTAMP,
    updated_at TIMESTAMP
);

🔗 URL Yapısı

Format: https://muzibu.com/l/{slug}

Örnekler:

https://muzibu.com/l/yeni-yil-kampanya https://muzibu.com/l/black-friday https://muzibu.com/l/ucretsiz-deneme

💻 Kod Örnekleri

Route: Modules/Landing/routes/web.php

Route::get('/l/{slug}', [LandingController::class, 'show'])
    ->name('landing.show');

Controller: LandingController.php

public function show($slug)
{
    $landing = Landing::where('slug', $slug)
        ->where('is_active', true)
        ->firstOrFail();

    return view("Landing::pages.{$landing->blade_path}", [
        'landing' => $landing,
    ]);
}

✅ Avantajlar

Bağımsızlık

  • ✓ Site temasından tamamen ayrı
  • ✓ Kendi CSS/JS framework'ü
  • ✓ Tema güncellemesi etkilemez

Basitlik

  • ✓ Sadece 1 dosya: homepage.blade.php
  • ✓ Klasör yapısı anlaşılır
  • ✓ Yönetim kolay

Performans

  • ✓ CDN kullanımı → Hızlı yükleme
  • ✓ Blade cache sistemi aktif
  • ✓ Ortalama yükleme <500ms

Multi-Tenant

  • ✓ Her tenant kendi klasöründe
  • ✓ Tenant izolasyonu güçlü
  • ✓ Tenant database kullanımı

🔮 Gelecek Geliştirmeler

Faz 1

Admin Panel Upload - Blade dosyası upload özelliği

Faz 2

Versiyon Kontrolü - Landing versiyonlarını saklama

Faz 3

A/B Testing - Farklı varyantları test etme

Faz 4

Analytics - Ziyaretçi tracking ve conversion

Faz 5

Custom Domain - Landing'lere özel domain

Faz 6

Template Library - Hazır template kütüphanesi

⚠️ Dikkat Edilmesi Gerekenler

  • FTP Erişimi: Manuel FTP yükleme gerekir
  • Çoklu Sunucu: Multi-server setup'ta rsync/NFS gerekir
  • Blade Cache: Güncellemeler için php artisan view:clear
  • Hata Yönetimi: Blade syntax hatası 500 error verir
31 Ocak 2026 • Muzibu.com