Sorun: PageController (Page modülü) direkt olarak ShopProduct (Shop modülü) kullanıyor.
Modules/Page/app/Http/Controllers/Front/PageController.php
Satır 52-140 arası 92 satır Shop kodu var!
Sorun: Muzibu.com gibi Shop modülü olmayan tenant'larda homepage çalışıyor ama gereksiz kod yükü var.
Şu anda class_exists() ile kontrol ediliyor ama bu emergency fix, kalıcı çözüm değil.
Sorun: Aynı ürün verisi çekme mantığı birden fazla yerde tekrarlanıyor:
Sistemde zaten mevcut olan WidgetManagement modülünü kullanarak Shop ürünlerini göstermek.
Page modülü artık Shop modülünden bağımsız çalışacak. Shop yoksa boş array dönecek, homepage çökmeyecek.
Her modül kendi verilerini kendisi yönetecek. Page modülü sadece sayfa render etmekten sorumlu.
getData() metodu içinde Shop ürünleri çekilecek$widgetService->getModuleData('shop/homepage')$homepageProducts array'i aynı formatta gelecekDosya: Modules/WidgetManagement/resources/views/blocks/modules/shop/ShopModules.php
İçerik:
Modules\WidgetManagement\Resources\views\blocks\modules\shopgetData(array $settings = []): array metoduclass_exists(ShopProduct) kontrolüBeklenen Sonuç: Shop modülü kendi verilerini yöneten ayrı bir sınıf.
Dosya: Modules/Page/app/Http/Controllers/Front/PageController.php
Değişiklik:
$homepageProducts = collect([]);
if (class_exists('\\Modules\\WidgetManagement\\App\\Services\\WidgetService')) {
$widgetService = app(\Modules\WidgetManagement\App\Services\WidgetService::class);
$products = $widgetService->getModuleData('shop/homepage', []);
$homepageProducts = collect($products);
}
Beklenen Sonuç: PageController 92 satır daha az, modüler yapı.
Test Senaryosu:
Test Senaryosu:
$homepageProducts boş array mı? ✓Her modül kendi sorumluluğunu taşıyor. Page modülü Shop'a bağımlı değil.
Shop modülü olmayan tenant'larda (Muzibu) sistem çökmüyor, boş array dönüyor.
Shop product logic tek yerde (ShopModules.php). Değişiklik gerekirse tek dosya güncellenir.
İleride başka modüller de (Blog, Portfolio) widget sistemi ile entegre edilebilir.
ShopModules::getData() metodu aynı array formatını döndürmeli ki homepage.blade.php değişmesin.
Mevcut format:
id, title, descriptionprice, currency, formatted_priceimage, category, badgestry_price, compare_at_price, auto_discount_percentageHer iki tenant'ta da test edilmeli: