Ne Yapıyoruz?
Muzibu orta alanını (main) saate, sektöre ve gösterildiği sayfaya (anasayfa, sektör, radyo, genre vb.) 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.
Her Koleksiyonun 4 Sorusu
Admin bir koleksiyon oluştururken şu 4 şeyi ayarlar:
show_ondisplay_rulessector_rules + corporate_account_idSektöre göre: Sadece Kafe sektöründekiler görür.
Corporate'a özel: Sadece o firmanın çalışanları görür.
template"Kime?" Detayı
Herkes zaten üye olduğu için abonelik filtresi yok. İki filtre var:
corporate_account_id = NULL
corporate_account_id = NULL
corporate_account_id = 5
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┌───────┬───────┬───────┬───────┐ │ Pop │ Rock │ Jazz │ R&B │ ├───────┼───────┼───────┼───────┤ │ Metal │ Türkü │ Caz │ Dance │ └───────┴───────┴───────┴───────┘
horizontal-scroll — Yatay KaydırmaBaşlık Tümü › ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ → │ │ │ │ │ │ │ │ │ img │ │ img │ │ img │ │ img │ │ │ │ │ │ │ │ │ └─────┘ └─────┘ └─────┘ └─────┘ Ad Ad Ad Ad
İleride yeni tasarımlar (banner, carousel, mini liste vb.) kolayca eklenebilir — DB'de VARCHAR olarak saklanıyor.
Tablo 1: muzibu_content_collections
Her satır bir koleksiyon. Admin panelden oluşturulur.
| 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 sayfalarda görünsün? | ["homepage", "sector", "radio", "genre"] |
| template | VARCHAR | NASIL: Hangi tasarımla? | grid, horizontal-scroll |
| display_rules | JSON NULL | NE ZAMAN: Saat + gün kuralı | {"start_hour":6, "end_hour":12, "is_always":false} |
| sector_rules | JSON NULL | KİME (sektör): Hangi sektörlere? | {"show_to_all":true} veya {"mode":"include", "sector_ids":[1]} |
| corporate_account_id | FK NULL | KİME (firma): NULL = herkes, dolu = o firmaya özel | 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. Radyo + Playlist + Albüm karışık eklenebilir.
| 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ç (Kafe, Spor Salonu...)
Firmaya özel → corporate hesap seç (X Otel Zinciri)
Sitede Ne Olacak?
Versiyon Geçmişi
Teknik detaylar, kod örnekleri ve tüm kararlar için:
Tam Dokümantasyon (v10)Not: v10 henüz v3 değişikliklerini içermiyor, güncellenecek.