b2in/dev/DISPLAY_CMS_README.md
2026-01-23 17:33:10 +01:00

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
  • Ü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

Wie funktioniert es?

Mit URL (QR-Code wird angezeigt):

  1. Beim Erstellen mit URL wird automatisch ein 6-stelliger Short-Code generiert (z.B. c59kjb)
  2. 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
  3. QR-Code auf dem Display zeigt die Short-URL
  4. Bei Klick wird der User zur Original-URL weitergeleitet
  5. Klicks werden gezählt und im CMS angezeigt

Ohne URL (nur Text):

  1. Beim Erstellen ohne URL wird kein Short-Code generiert
  2. Nur Text wird im Footer angezeigt (Überschrift + Unterzeile)
  3. Kein QR-Code wird angezeigt
  4. 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                        [+]   │
│ 📊 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
- 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

  1. Im CMS auf "Inhalt hinzufügen" klicken
  2. Formular ausfüllen:
    • Überschrift: "Beratung & Termin"
    • Unterzeile: "Jetzt Termin vereinbaren."
    • URL: https://www.cabinet.de/bielefeld?utm_source=...
  3. Speichern
  4. Short-Code wird automatisch generiert (z.B. c59kjb)
  5. Short-URL wird erstellt: https://cabinet.b2in.eu/go.php?z=c59kjb
  6. Display lädt neue Konfiguration (max. 5 Minuten)
  7. QR-Code zeigt automatisch den Short-Link
  8. Klicks werden gezählt und angezeigt

Video hinzufügen

  1. Video-Datei in public/_cabinet/assets/ hochladen
  2. Im CMS auf "Video hinzufügen" klicken
  3. Video aus Dropdown auswählen
  4. Titel vergeben (optional)
  5. Position einstellen (0-100%)
  6. Speichern
  7. Video wird zur Playlist hinzugefügt
  8. Display spielt Video ab

Klick-Statistiken ansehen

  1. Im CMS unter "Footer-Inhalte" öffnen
  2. Bei jedem Inhalt wird die Anzahl der Klicks angezeigt
  3. Gesamt-Klicks werden oben summiert angezeigt
  4. Zum Zurücksetzen: ⋮ → Klicks zurücksetzen

Short-Code neu generieren

  1. Bei gewünschtem Footer-Inhalt auf klicken
  2. "Short-Code neu generieren" wählen
  3. Neuer Code wird erstellt
  4. ⚠️ Alter Code funktioniert nicht mehr
  5. 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

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:

  1. Logs prüfen
  2. Browser-Console prüfen
  3. API manuell testen
  4. Cache leeren