Ne Yapıyoruz?
Muzibu orta alanını (main) saate, güne, sektöre ve gösterildiği 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" → hafta içi 06:00-12:00, anasayfada, Kafe sektörüne gösterilir.
Kullanıcı sayfayı açık bıraksa bile her saat başı içerik otomatik güncellenir, müzik kesilmez.
Sayfa Yapısı
| Sayfa | URL | Alt Sayfa | visibility_rules Key |
|---|---|---|---|
| Anasayfa | / | Yok (tek sayfa) | sector_ids (kullanıcı filtresi) |
| Sektörler | /sectors/{slug} | Her sektörün kendi sayfası | sector_ids → hangi sektör sayfalarında |
| Türler | /genres/{slug} | Her genre'nin kendi sayfası | genre_ids → hangi genre sayfalarında |
| Radyolar | /radios | Yok (tek sayfa) | Yok — show_on: ["radio"] yeterli |
| Koleksiyon Detay YENİ | /collections/{slug} | "Tümünü Gör" sayfası | — |
/sectors/{slug}/radios, /sectors/{slug}/playlists) kalkacak. Her sektörün tek bir ana sayfası: /sectors/{slug}
Fallback Sistemi
Koleksiyon atanmamış veya aktif koleksiyonu olmayan sayfalarda mevcut görünüm korunur.
is_active=1 VE en az 1 aktif öğesi var (items.is_active=1). İçindeki tüm öğeler pasifse → koleksiyon da pasif sayılır, gösterilmez.
Her Koleksiyonun 3 Sorusu
Admin bir koleksiyon oluştururken şu 3 şeyi ayarlar. Tasarım otomatik belirlenir.
show_ondisplay_rulesvisibility_rules + corporate_account_iddisplay_rules Detayı GÜNCELLENDİ
Günlere özel saat aralıkları. Birden fazla zamanlama tanımlanabilir:
{"days":[1,2,3,4,5], "start_hour":6, "end_hour":12}
]}
{"days":[1,2,3,4,5], "start_hour":6, "end_hour":12},
{"days":[6,7], "start_hour":10, "end_hour":14}
]}
{"days":[5,6], "start_hour":22, "end_hour":6}
]}
visibility_rules Detayı
Tek JSON kolon. Sektör ve genre filtresi:
Kullanılacak Kartlar
Yeni kart yapılmayacak. Mevcut component'ler aynen kullanılacak:
| Component | Ne İçin | Tıklanınca | Tasarım |
|---|---|---|---|
| x-muzibu.playlist-card | Çalma listesi | Şarkı listesi açılır | Yatay kaydırma |
| x-muzibu.album-card | Albüm | Albüm detayı açılır | Yatay kaydırma |
| x-muzibu.radio-card | Radyo | Hemen çalar (sayfa değişmez) | Yatay kaydırma |
| x-muzibu.genre-quick-card | Tür | Genre sayfası açılır | Grid |
| x-muzibu.sector-card | Sektör | Sektör sayfası açılır | Yatay kaydırma |
Tablo 1: muzibu_content_collections
Her satır bir koleksiyon. Admin panelden oluşturulur. 12 kolon.
| Kolon | Tip | Ne İşe Yarar | Örnek |
|---|---|---|---|
| collection_id | BIGINT PK | Otomatik numara | 1, 2, 3 |
| title | JSON | Koleksiyon adı (çoklu dil) | {"tr": "Sabah Kafe Mix"} |
| slug | JSON | URL kısa ismi | {"tr": "sabah-kafe-mix"} |
| description | JSON NULL | Açıklama (opsiyonel) | {"tr": "Sabah için..."} |
| show_on | JSON | NEREDE: Hangi sayfa tiplerinde? | ["homepage", "sector", "radio", "genre"] |
| display_rules GÜNCELLENDİ | JSON NULL | NE ZAMAN: Günlere özel saat aralıkları | {"schedules":[{"days":[1,2,3,4,5],"start_hour":6,"end_hour":12}]} |
| visibility_rules | JSON NULL | KİME: Sektör + genre filtresi | {"sector_ids":[1]} veya {"genre_ids":[5,8]} |
| corporate_account_id | FK NULL | KİME (firma): NULL = herkes | NULL veya 5 |
| icon | VARCHAR NULL | Başlık ikonu | fas fa-coffee |
| color | VARCHAR NULL | Renk kodu | #f59e0b |
| media_id | FK NULL | Kapak görseli | 42 |
| sort_order | INT | Sıralama (küçük = üstte) | 1, 2, 3 |
| is_active | BOOLEAN | Açık / Kapalı | 1 |
Tablo 2: muzibu_collection_items
Her satır, bir koleksiyona eklenmiş bir öğe. 6 kolon.
| Kolon | Tip | Ne İşe Yarar | Örnek |
|---|---|---|---|
| id | BIGINT PK | Otomatik numara | 1, 2, 3 |
| collection_id | FK | Hangi koleksiyona ait | 1 |
| itemable_type | VARCHAR | Öğe türü (5 seçenek) | playlist, album, radio, genre, sector |
| itemable_id | BIGINT | Öğenin ID'si | 12 |
| sort_order | INT | Sıralama (sürükle-bırak) | 1, 2, 3 |
| is_active | BOOLEAN | Aktif mi? | 1 |
Ek: users Tablosuna Eklenen Kolon
| Kolon | Tip | Ne İşe Yarar | Örnek |
|---|---|---|---|
| sector_id | FK NULL | Kullanıcının sektörü. Kafe sahibi = Kafe koleksiyonlarını görür. | 1 |
Admin Panelde Ne Yapılacak?
Sektöre göre → sektör seç (anasayfada kullanıcı filtresi + sektör sayfasında sayfa filtresi)
Genre'a göre → genre seç (genre sayfasında sayfa filtresi)
Firmaya özel → corporate hesap seç
Sitede Ne Olacak?
/collections/{slug} sayfasında tüm öğeler grid'de gösterilir.Senaryo Örnekleri
Referans: Mevcut Sayfa Görünümleri (Fallback)
| Sayfa | Mevcut İçerik | Kart / Tasarım |
|---|---|---|
| Anasayfa | Türler (15, grid) + Playlistler (10, yatay) + Albümler (10, yatay) + Radyolar (10, yatay) + Sektörler (10, yatay) | 5 bölüm, 55 kart toplam |
| /sectors/{slug} | O sektöre ait radyolar + playlistler | 2 bölüm, yatay kaydırma |
| /genres/{slug} | O türe ait playlistler | Hero + playlist listesi |
| /radios | Tüm radyolar listesi | Grid/liste |
Versiyon Geçmişi
/collections/{slug} "Tümünü Gör" sayfası eklendi. Aktif öğesi olmayan koleksiyon = pasif. Karşılama (greeting) kaldırıldı.Teknik detaylar, kod örnekleri ve tüm kararlar için:
Tam Dokümantasyon (v10)Not: v10 henüz v7 değişikliklerini içermiyor, güncellenecek.