v2 26 Şubat 2026

Dinamik İçerik Sistemi — Basit Özet

Ne yapıyoruz, tablolarda ne var, admin'de ne yapılıyor, sitede ne görünüyor.

Ne Yapıyoruz?

Muzibu anasayfasının orta alanını (main) saate, sektöre ve sayfaya göre değişen bir sisteme çeviriyoruz.

Admin panelden "Koleksiyon" denen gruplar oluşturulacak. Her koleksiyonun içine Playlist, Albüm, Radyo, Genre veya Sektör eklenebilecek.

Örnek: "Sabah Kafe Mix" koleksiyonu → sadece 06:00-12:00 arası, sadece anasayfada, sadece Kafe sektörüne, yatay kaydırma tasarımıyla gösterilir.

Kullanıcı sayfayı açık bıraksa bile her saat başı içerik otomatik güncellenir, müzik kesilmez.

Neye Dokunuyoruz, Neye Dokunmuyoruz?
Değişecek
Anasayfa ORTA ALAN (main). Şu an orada: Türler grid, Playlist'ler, Albümler, Radyolar, Sektörler → hepsi kalkacak, yerine koleksiyonlar gelecek.
Dokunulmayacak
Left sidebar, right sidebar, header, player bar, footer — hepsi aynen kalacak. Sadece ortadaki main alan değişiyor.

Her Koleksiyonun 4 Sorusu

Admin bir koleksiyon oluştururken şu 4 şeyi ayarlar:

NEREDE?
Hangi sayfalarda görünsün?
Kolon: show_on
Seçenekler: Anasayfa, Sektör sayfası, Genre sayfası... Birden fazla seçilebilir.
NE ZAMAN?
Hangi saatlerde görünsün?
Kolon: display_rules
06:00-12:00 arası, veya "Her zaman". Gün seçimi de var.
KİME?
Hangi sektörlere görünsün?
Kolon: sector_rules
Herkese, veya sadece Kafe sektörüne, veya Spor Salonu hariç herkese.
NASIL?
Hangi tasarımla görünsün?
Kolon: template
Grid (tür kartları gibi) veya Yatay kaydırma (playlist kartları gibi). İleride yenileri eklenebilir.

Tasarım Seçenekleri

Admin her koleksiyon için tasarım seçer. Şu an 2 tasarım var, ileride yenileri eklenebilir:

grid — Grid Görünüm
Şu an anasayfadaki "Türler" bölümü gibi. Renkli kutucuklar, 2 satır, yan yana.
┌───────┬───────┬───────┬───────┐
│ PopRockJazzR&B   │
├───────┼───────┼───────┼───────┤
│ MetalTürküCazDance │
└───────┴───────┴───────┴───────┘
horizontal-scroll — Yatay Kaydırma
Şu an anasayfadaki Playlist/Albüm/Radyo bölümleri gibi. Kapak görselli kartlar, yatay kaydırma.
Başlık               Tümü ›
┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐  →
│     │ │     │ │     │ │     │
│ img │ │ img │ │ img │ │ img │
│     │ │     │ │     │ │     │
└─────┘ └─────┘ └─────┘ └─────┘
  Ad      Ad      Ad      Ad

İleride yeni tasarımlar (örn: büyük banner, carousel, mini liste) kolayca eklenebilir — DB'de VARCHAR olarak saklanıyor.

Tablo 1: muzibu_content_collections (Koleksiyonlar)

Her satır bir koleksiyon. Admin panelden oluşturulur.

KolonNe İşe YararÖrnek
collection_idOtomatik numara (ID)1, 2, 3...
titleKoleksiyon adı (çoklu dil){"tr": "Sabah Kafe Mix"}
slugURL'de kullanılan kısa isim{"tr": "sabah-kafe-mix"}
descriptionAçıklama (opsiyonel){"tr": "Sabah saatleri için..."}
show_on YENİ Hangi sayfalarda görünsün?
Birden fazla seçilebilir
["homepage", "sector"]
template YENİ Hangi tasarımla görünsün?
İleride yeni tasarımlar eklenebilir
grid, horizontal-scroll
iconBaşlığın yanındaki ikonfas fa-coffee
colorRenk kodu#f59e0b
media_idKapak görseli42
display_rules Hangi saatlerde görünsün?
start_hour, end_hour, günler, her zaman mı?
{"start_hour": 6, "end_hour": 12, "is_always": false}
sector_rules Hangi sektörlere görünsün?
Herkese mi, belirli sektörlere mi?
{"show_to_all": false, "mode": "include", "sector_ids": [1,3]}
business_rules Abonelik kuralı
premium, free, corporate, hepsi
{"subscription": "all"}
sort_order DEĞİŞTİ Sıralama (küçük = üstte)
Eski adı: priority. Artık projede standart sort_order kullanılıyor.
1, 2, 3...
is_activeAçık/Kapalı1
Kaldırılan Kolonlar
SİLİNDİ type (ENUM) — Gereksizdi. Filtreleme zaten display_rules + sector_rules ile yapılıyor. Yerine show_on + template geldi.
SİLİNDİ is_featured — type=featured kaldırılınca bu da gereksiz kaldı.
SİLİNDİ cache_ttl — Veritabanında yeri yok. Cache süresi kodda sabit (300 saniye).

Tablo 2: muzibu_collection_items (Koleksiyon İçerikleri)

Her satır, bir koleksiyona eklenmiş bir öğe. Aynı koleksiyona Radyo + Playlist + Albüm karışık eklenebilir.

KolonNe İşe YararÖrnek
idOtomatik numara1, 2, 3...
collection_idHangi koleksiyona ait1 (Sabah Kafe Mix)
itemable_typeEklenen şeyin türü (5 seçenek)playlist, album, radio, genre, sector
itemable_idEklenen şeyin ID'si12 (playlist_id=12)
sort_order DEĞİŞTİSıralama (sürükle-bırak)
Eski adı: position
1, 2, 3...
is_activeBu öğe aktif mi?1
Örnek: "Sabah Kafe Mix" koleksiyonunun içeriği
collection_id=1, type=radio, id=5 (Jazz FM), sort_order=1
collection_id=1, type=playlist, id=12 (Sabah Akustik), sort_order=2
collection_id=1, type=playlist, id=45 (Kahve Molası), sort_order=3
collection_id=1, type=album, id=8 (Cafe Classics), sort_order=4

Ek: users Tablosuna Eklenen Kolon

KolonNe İşe YararÖrnek
sector_idKullanıcının sektörü. Bu sayede "Kafe sahibi" ayrı, "Spor salonu sahibi" ayrı içerik görür.1 (Kafe & Restoran)

Admin Panelde Ne Yapılacak?

1
Koleksiyon Oluştur
İsim ver, ikon ve renk seç. Kapak görseli ekle (opsiyonel).
2
Nerede Görünsün? YENİ
Anasayfa, sektör sayfası, genre sayfası... Birden fazla sayfa seçilebilir.
3
Tasarım Seç YENİ
Grid (tür kartları gibi) veya Yatay kaydırma (playlist kartları gibi). İleride yeni tasarımlar eklenebilir.
4
Saat Ayarla
Başlangıç ve bitiş saati seç (dropdown: 00:00, 01:00 ... 23:00). Veya "Her zaman göster" seç.
5
Sektör Seç
Herkese göster veya sadece belirli sektörlere göster (Kafe, Spor Salonu, Otel...).
6
İçerik Ekle
Koleksiyona Playlist, Albüm, Radyo, Genre veya Sektör ekle. Sürükle-bırak ile sırala.
7
Sıralama Belirle
Koleksiyonlar arası sıralama: sort_order (küçük numara = daha üstte). Sürükle-bırak.

Sitede Ne Olacak?

1
Kişisel Karşılama
Saate göre: "Günaydın, Ahmet!" + sektör adı: "Kafe & Restoran için seçilmiş içerikler"
2
Koleksiyonlar Listelenir
O saatte, o sektöre ve o sayfaya uygun koleksiyonlar sırayla görünür. Her biri admin'in seçtiği tasarımda (grid veya yatay kaydırma).
3
Tıklama Davranışları
Radyo → hemen çalar (sayfa değişmez)
Playlist / Albüm → şarkı listesi sayfası açılır
Genre / Sektör → ilgili sayfa açılır
4
"Tümü" Butonu
Koleksiyonda 7+ öğe varsa "Tümü" butonu çıkar → tıklanınca grid sayfa açılır. 6 ve altıysa buton gizli.
5
Her Saat Başı Otomatik Güncelleme
Kullanıcı sayfayı yenilemese bile her saat başı içerik sessizce değişir. Müzik kesilmez. Sayfa yenilenmez. Sadece orta alan güncellenir.
Nerelerde Çalışacak?
Anasayfa Main alan tamamen koleksiyonlardan oluşacak
Sektör Sayfaları Her sektörün kendi sayfasında da koleksiyonlar gösterilecek
Genre Sayfaları İleride genre sayfalarında da kullanılabilir
v1 → v2 Değişiklikler
SİLİNDİ type ENUM — gereksiz, filtreleme zaten JSON kurallarla yapılıyor
SİLİNDİ is_featured — type kaldırılınca bu da gereksiz
SİLİNDİ cache_ttl — DB'de yeri yok, kodda sabit
YENİ show_on JSON — hangi sayfalarda görünsün (homepage, sector, genre...)
YENİ template VARCHAR — tasarım seçimi (grid, horizontal-scroll, ileride daha fazla)
DEĞİŞTİ prioritysort_order — proje standardına uyum, küçük = üstte
DEĞİŞTİ positionsort_order — items tablosunda da aynı isim
YENİ "4 soru" açıklaması — NEREDE, NE ZAMAN, KİME, NASIL
YENİ Tasarım seçenekleri bölümü — grid + yatay kaydırma wireframe
YENİ Anasayfa main alan açıklaması — sidebar'lara dokunulmayacak
YENİ Sayfa bazlı gösterim — anasayfa + sektör + genre sayfaları

Teknik detaylar, kod örnekleri ve tüm kararlar için:

Tam Dokümantasyon (v10)

Not: v10 henüz bu v2 değişikliklerini içermiyor, güncellenecek.