Slug Management Sistemi Düzeltmesi

Show Slug Özelleştirme Sorunu Çözüldü

Tamamlandı 20 Ocak 2026

Basit Anlatım (Herkes İçin)

Sorun Neydi?

Yıldırım Panjur sitesinde blog yazılarının URL'lerini "haberler" olarak değiştirdiniz. Admin panelden ayarı yaptınız, veritabanına kaydedildi, ama site hala eski "blog" adresini kullanıyordu.

Örnek:

  • Çalışmıyordu: /haberler/sisli-mecidiyekoy-panjur-tamiri
  • Çalışıyordu: /blog/sisli-mecidiyekoy-panjur-tamiri

Neden Oluyordu?

Sistemde "detay sayfası" için özel URL belirleyebiliyorsunuz, ama arka plandaki kod bu özel URL'i kontrol etmiyordu. Sadece "liste sayfası" URL'ini kullanıyordu.

Düşünün ki kapınıza yeni bir isim yazdınız ama postacıya söylemediniz - mektuplar hala eski adrese gidiyordu.

Ne Yapıldı?

Sistemin URL kontrolü yapan kısmı güncellendi. Artık hem "liste" hem de "detay" için belirlediğiniz özel URL'ler çalışıyor.

Teknik Detaylar (Geliştiriciler İçin)

Sorunun Kök Nedeni

DynamicRouteResolver.php:163 satırında iki-slug pattern (örn: /prefix/content-slug) için sadece index slug'ı kontrol ediliyordu:

// Eski kod
if ($slug1 === $moduleSlugMap['index'] && isset($routes['show'])) {
    // show sayfasına yönlendir
}

Bu mantık, show için özel slug tanımlandığında çalışmıyordu.

Uygulanan Düzeltme

İki-slug pattern kontrolüne show slug desteği eklendi:

// Yeni kod
// 1. Önce show slug kontrol et
if (isset($moduleSlugMap['show']) && $slug1 === $moduleSlugMap['show']) {
    return show sayfası;
}

// 2. Backward compatibility: index slug ile de çalış
if ($slug1 === $moduleSlugMap['index'] &&
    (!isset($moduleSlugMap['show']) || $moduleSlugMap['show'] === $moduleSlugMap['index'])) {
    return show sayfası;
}

Değişen Dosyalar

  • app/Services/DynamicRouteResolver.php

Veritabanı Yapısı

Slug ayarları module_tenant_settings tablosunda JSON formatında saklanıyor:

{
  "multiLangSlugs": {
    "tr": {
      "index": "blog",
      "show": "haberler",  // Özelleştirilmiş show slug
      "tag": "blog/etiket"
    }
  }
}

Test Sonuçları

Tenant URL Sonuç
Yıldırım Panjur (3) /haberler/sisli-mecidiyekoy-panjur-tamiri 200 OK
İxtif (2) /blog/transpalet-nedir-... 200 OK
tuufi.com (central) /blog 200 OK

Önemli Not: Cache Temizleme

Slug ayarlarını değiştirdikten sonra değişikliklerin yansıması için cache temizlenmeli:

php artisan cache:clear
php artisan responsecache:clear

Ya da admin panelden slug değişikliği yapıldığında ModuleSlugService::clearCache() otomatik çağrılıyor olmalı.