Studio modülünde FILE type widget'lar drag-drop edildiğinde, settings.json dosyası okunmuyor!
Widget view'ı boş bir $settings = [] array'i ile render ediliyor.
// BlockService.php - prepareWidgetContent() methodunda:
case 'file':
if (!empty($widget->file_path)) {
$viewPath = 'widgetmanagement::blocks.' . $widget->file_path;
if (View::exists($viewPath)) {
// ❌ SORUN: Settings boş array!
$content = View::make($viewPath, ['settings' => []])->render();
}
}
break;
['settings' => []] boş array geçiliyor$settings['title_line1'] → boş{
"title_line1": { "type": "text", "default": "Endüstriyel Ekipman" },
"title_line2": { "type": "text", "default": "Çözümleri" },
"description": { "type": "textarea", "default": "..." },
"cta_text": { "type": "text", "default": "Hemen Keşfet" },
"cta_url": { "type": "text", "default": "/urunler" },
"hero_image": { "type": "media" },
"feature_1_title": { "type": "text", "default": "Hızlı Teslimat" },
...
}
<h1>
@if(!empty($settings['title_line1']))
<span>{{ $settings['title_line1'] }}</span>
@endif
</h1>
<!-- ❌ Studio'da: $settings boş olduğu için hiçbir şey gösterilmiyor! -->
has_settings veya supports_form_builder?Ne yapılacak: FILE widget render edilirken settings.json dosyasını oku ve default değerleri yükle
case 'file':
if (!empty($widget->file_path)) {
$viewPath = 'widgetmanagement::blocks.' . $widget->file_path;
// ✅ Settings.json dosyasını oku
$settings = $this->loadWidgetSettings($widget);
if (View::exists($viewPath)) {
$content = View::make($viewPath, ['settings' => $settings])->render();
}
}
break;
Avantaj: Widget'lar default değerlerle gösterilir, boş kalmaz
Ne yapılacak: FILE widget seçilince sağ panelde settings formu göster
Avantaj: Kullanıcı settings'leri Studio içinde düzenleyebilir
Ne yapılacak: Widget'ların hangileri settings destekliyor ayırt et
// Migration
ALTER TABLE widgets ADD COLUMN supports_settings BOOLEAN DEFAULT 0;
// Hero, Form, Cards → supports_settings = 1
// Layout, Basit widget'lar → supports_settings = 0
Avantaj: Studio'da hangi widget'larda settings editor gösterileceği belli olur
supports_settings field ekleÇözüm: BlockService'e settings yükleme ekle + Studio'ya settings editor ekle + Boş widget'ları settings.json ile tamamla.
Bu şekilde hem mevcut Hero widget düzgün çalışır, hem de diğer FILE widget'lar için de aynı sistem kullanılabilir.