9.8 KiB
9.8 KiB
Cabinet Display CMS - Dokumentation
Übersicht
Das Display CMS ermöglicht die zentrale Verwaltung der Inhalte für die Digital Signage Display-Seite im Cabinet Showroom Bielefeld.
Einheitlicher Pfad: Das System nutzt public/_cabinet/ für Testserver und Live-Server.
Zugriff
Testserver
- Display:
http://portal.b2in.test/_cabinet/ - CMS:
http://portal.b2in.test/admin/cms/cabinet - API:
http://portal.b2in.test/api/display/config
Live-Server
- Display:
https://cabinet.b2in.eu/(Subdomain zeigt auf/_cabinet/) - CMS:
https://b2in.eu/admin/cms/cabinet - API:
https://b2in.eu/api/display/config
Funktionen
1. Video-Verwaltung
- ✅ Videos aus dem
public/_cabinet/assets/Ordner verwalten - ✅ Reihenfolge per Pfeiltasten ändern
- ✅ Video-Position (0-100%) für optimalen Bildausschnitt einstellen
- ✅ Videos aktivieren/deaktivieren
- ✅ Titel für bessere Übersicht vergeben
2. Footer-Content-Verwaltung mit Tracking
- ✅ Überschrift, Unterzeile und optional Ziel-URL eingeben
- ✅ Automatische Short-Link-Generierung (nur wenn URL angegeben)
- ✅ Echtzeit-Klick-Tracking über Short-Links
- ✅ Klick-Statistiken direkt im CMS
- ✅ Ohne URL: Nur Text wird angezeigt, kein QR-Code
- ✅ Mit URL: QR-Code mit Short-Link wird automatisch generiert
- ✅ Reihenfolge ändern (werden alle 30 Sekunden rotiert)
- ✅ Inhalte aktivieren/deaktivieren
- ✅ Short-Code neu generieren
- ✅ Klick-Zähler zurücksetzen
3. Short-Link-System
Wie funktioniert es?
Mit URL (QR-Code wird angezeigt):
- Beim Erstellen mit URL wird automatisch ein 6-stelliger Short-Code generiert (z.B.
c59kjb) - Short-URL wird automatisch erstellt:
- Testserver:
http://portal.b2in.test/_cabinet/go.php?z=c59kjb - Live-Server:
https://cabinet.b2in.eu/go.php?z=c59kjb
- Testserver:
- QR-Code auf dem Display zeigt die Short-URL
- Bei Klick wird der User zur Original-URL weitergeleitet
- Klicks werden gezählt und im CMS angezeigt
Ohne URL (nur Text):
- Beim Erstellen ohne URL wird kein Short-Code generiert
- Nur Text wird im Footer angezeigt (Überschrift + Unterzeile)
- Kein QR-Code wird angezeigt
- Text-Bereich nutzt die volle Breite des Footers
Vorteile
- ✅ Kürzere URLs für bessere QR-Codes
- ✅ Automatisches Tracking aller Scans
- ✅ Zentrale Verwaltung aller Links
- ✅ Statistiken direkt im CMS
- ✅ Links können geändert werden ohne QR-Code neu zu generieren
- ✅ Funktioniert identisch auf Test- und Live-Server
CMS-Interface
Video-Playlist
┌─────────────────────────────────────────────┐
│ Video-Playlist [+] │
├─────────────────────────────────────────────┤
│ ↑↓ [Aktiv] Herbst 2025 │
│ 📁 herbst_2025.mp4 📍 Position: 25% │
│ [👁] [✏] [🗑] │
├─────────────────────────────────────────────┤
│ ↑↓ [Aktiv] Frühjahr 2025 │
│ 📁 fruehjahr_2025.mp4 📍 Position: 10% │
│ [👁] [✏] [🗑] │
└─────────────────────────────────────────────┘
Footer-Inhalte
┌─────────────────────────────────────────────┐
│ Footer-Inhalte [+] │
│ 📊 Gesamt-Klicks: 47 │
├─────────────────────────────────────────────┤
│ ↑↓ [Aktiv] Beratung & Termin [🔵 23 Klicks]│
│ Jetzt Termin vereinbaren. │
│ 🔗 c59kjb [📋 Short-Link] │
│ 🔗 https://www.cabinet.de/bielefeld... │
│ [👁] [⋮] │
│ ├─ Bearbeiten │
│ ├─ Short-Code neu generieren │
│ ├─ Klicks zurücksetzen │
│ └─ Löschen │
└─────────────────────────────────────────────┘
Technische Details
Ordnerstruktur
public/_cabinet/
├── index.html # Display-Seite (lädt dynamisch via API)
├── go.php # Short-Link-Handler mit Tracking
├── assets/ # Video-Dateien
│ ├── herbst_2025.mp4
│ ├── fruehjahr_2025.mp4
│ └── ...
└── clicks.log # Tracking-Log (wird automatisch erstellt)
Datenbank-Tabellen
display_videos
- id (PK)
- filename -- Dateiname des Videos
- title -- Optionaler Titel
- position -- Vertikale Position (0-100%)
- sort_order -- Reihenfolge der Wiedergabe
- is_active -- Aktiv/Inaktiv
- created_at, updated_at
display_footer_contents
- id (PK)
- headline -- Überschrift
- subline -- Unterzeile
- url -- Original-Ziel-URL
- short_code -- 6-stelliger eindeutiger Code
- clicks -- Anzahl der Klicks
- sort_order -- Reihenfolge der Anzeige
- is_active -- Aktiv/Inaktiv
- created_at, updated_at
Konfiguration
Datei: config/display.php
'base_path' => env('DISPLAY_BASE_PATH', '_cabinet'),
'subdomain' => env('DISPLAY_SUBDOMAIN', null),
'domain' => env('DISPLAY_DOMAIN', 'b2in.eu'),
Umgebungsvariablen (.env):
# Testserver
DISPLAY_BASE_PATH=_cabinet
DISPLAY_SUBDOMAIN=
DISPLAY_DOMAIN=b2in.test
# Live-Server
DISPLAY_BASE_PATH=_cabinet
DISPLAY_SUBDOMAIN=cabinet
DISPLAY_DOMAIN=b2in.eu
APP_ENV=production
API-Response-Format
Endpunkt: /api/display/config
{
"videoPlaylist": [
{
"src": "assets/herbst_2025.mp4",
"position": 25
}
],
"footerContent": [
{
"headline": "Beratung & Termin",
"subline": "Jetzt Termin vereinbaren.",
"url": "https://cabinet.b2in.eu/go.php?z=c59kjb"
}
]
}
Workflow-Beispiele
Neuen Footer-Inhalt hinzufügen
- Im CMS auf "Inhalt hinzufügen" klicken
- Formular ausfüllen:
- Überschrift: "Beratung & Termin"
- Unterzeile: "Jetzt Termin vereinbaren."
- URL:
https://www.cabinet.de/bielefeld?utm_source=...
- Speichern
- ✅ Short-Code wird automatisch generiert (z.B.
c59kjb) - ✅ Short-URL wird erstellt:
https://cabinet.b2in.eu/go.php?z=c59kjb - ✅ Display lädt neue Konfiguration (max. 5 Minuten)
- ✅ QR-Code zeigt automatisch den Short-Link
- ✅ Klicks werden gezählt und angezeigt
Video hinzufügen
- Video-Datei in
public/_cabinet/assets/hochladen - Im CMS auf "Video hinzufügen" klicken
- Video aus Dropdown auswählen
- Titel vergeben (optional)
- Position einstellen (0-100%)
- Speichern
- ✅ Video wird zur Playlist hinzugefügt
- ✅ Display spielt Video ab
Klick-Statistiken ansehen
- Im CMS unter "Footer-Inhalte" öffnen
- Bei jedem Inhalt wird die Anzahl der Klicks angezeigt
- Gesamt-Klicks werden oben summiert angezeigt
- Zum Zurücksetzen: ⋮ → Klicks zurücksetzen
Short-Code neu generieren
- Bei gewünschtem Footer-Inhalt auf ⋮ klicken
- "Short-Code neu generieren" wählen
- ✅ Neuer Code wird erstellt
- ⚠️ Alter Code funktioniert nicht mehr
- ✅ QR-Code aktualisiert sich automatisch beim nächsten Reload
Logging
Datenbank-Tracking (Primär)
- Alle Klicks werden in der Datenbank gezählt
- Echtzeit-Statistiken im CMS
- Auswertungen nach Inhalt möglich
Datei-Logging (Backup)
- Zusätzliches Log:
public/_cabinet/clicks.log - Format:
YYYY-MM-DD HH:MM:SS - Code: c59kjb - Headline: ... - URL: ... - Nützlich für detaillierte Analysen
Log ansehen:
tail -f public/_cabinet/clicks.log
Wartung & Backup
Wichtige Daten für Backup
- Datenbank:
display_videos,display_footer_contents - Video-Dateien:
public/_cabinet/assets/ - Tracking-Log:
public/_cabinet/clicks.log
Videos hinzufügen
# Upload via SCP
scp video.mp4 user@server:/var/www/html/public/_cabinet/assets/
# Oder via FTP/SFTP
# Dann im CMS hinzufügen
Cache leeren
php artisan config:clear
php artisan cache:clear
php artisan route:clear
Troubleshooting
Display zeigt "LADEN..."
Problem: API nicht erreichbar
Lösung: Browser-Console (F12) prüfen, API-URL testen
Short-Links funktionieren nicht
Problem: Datenbankverbindung oder Berechtigungen
Lösung: go.php Berechtigungen prüfen, Logs prüfen
Klicks werden nicht gezählt
Problem: Datenbankupdate fehlgeschlagen
Lösung: clicks.log prüfen, Datenbank-Logs prüfen
Videos werden nicht abgespielt
Problem: Falsches Format oder Pfad
Lösung: Browser-Console prüfen, .mp4 mit H.264 verwenden
Performance-Tipps
Video-Optimierung
# FFmpeg für kleinere Dateien
ffmpeg -i input.mp4 -c:v libx264 -crf 23 \
-preset medium -c:a aac -b:a 128k output.mp4
Auto-Reload
- Display lädt alle 5 Minuten neue Konfiguration
- Für sofortiges Update: Display-Seite neu laden
Support & Dokumentation
- Setup-Guide:
DISPLAY_SETUP_LIVE.md - ENV-Variablen:
ENV_VARIABLES_DISPLAY.md - Laravel-Logs:
storage/logs/laravel.log - Tracking-Log:
public/_cabinet/clicks.log
Bei Problemen:
- Logs prüfen
- Browser-Console prüfen
- API manuell testen
- Cache leeren