Ana sayfadaki dinamik içerik bloklarını yönetin
Ana sayfanızda görünen trend şarkılar, yeni eklenenler, önerilen playlistler gibi tüm dinamik alanları widget olarak tanımladık. Hangi widget nerede görünsün, hangi sırada olsun tamamen sizin kontrolünüzde.
Ana sayfada zengin içerik bölümleri ile karşılaşır
Trend şarkılar, yeni albümler, öneriler gibi bölümler dikkat çeker
Her bölüm güncel ve ilgi çekici içeriklerle dolu
Kayan banner görselleri yönetin
Popüler içerikleri sergileyin
Yeni içerikleri öne çıkarın
Seçili içerikleri gösterin
Bağımsız çalışan küçük sayfa bileşeni
LEGO parçası gibi - bir araya gelerek sayfa oluşturur
Izgara düzeninde içerik gösterimi
Fotoğraf galerisi gibi sıralı kutucuklar
Yatay kaydırmalı içerik listesi
Instagram hikaye şeridi gibi
Otomatik güncellenen veriler
En çok dinlenenler otomatik güncellenir
Ana sayfadaki widget'lar yüklenirken veya sıralaması değiştirilirken arka planda şu işlemler gerçekleşir:
Ana sayfa açıldığında widgets tablosundan aktif widget'lar sıralama numarasına göre çekilir. Her widget'ın tipi, başlığı ve ayarları (kaç içerik gösterilecek gibi) bu tabloda tutulur.
Widget::where('is_active', true)->orderBy('order')->get()
Her widget tipi (trending, new-releases, recommended) ayrı bir Blade component olarak tanımlıdır. Widget tipi okunur ve ilgili component dinamik olarak render edilir.
@component('widgets.' . $widget->type, ['settings' => $widget->settings])
"Trend Şarkılar" widget'ı için son 7 günde en çok dinlenen şarkılar, "Yeni Eklenenler" için son eklenen içerikler sorgulanır. Her widget kendi veri kaynağını bilir.
Song::withCount('plays')->orderByDesc('plays_count')->take(10)
Admin panelde widget sıralaması değiştirildiğinde SortableJS kütüphanesi devreye girer. AJAX ile yeni sıralama sunucuya gönderilir ve order değerleri güncellenir.
Widget::find($id)->update(['order' => $newOrder])
Her widget'ın içeriği Redis'te 5 dakika önbelleklenir. Binlerce kullanıcı aynı anda ana sayfayı açsa bile veritabanı sorgusu sadece cache süresi dolduğunda çalışır.
Cache::remember("widget:{$type}", 300, fn() => $query)
Widget'lar "Yayında/Taslak" durumuna sahiptir. Admin tek tıkla bir widget'ı gizleyebilir veya gösterebilir. Bu değişiklik anında yansır, cache temizlenir.
$widget->update(['is_active' => !$widget->is_active])
Bileşenleri birleştir, sayfanı oluştur