From 88fceb67b174d1600048bcd118b458dddb8c7e36 Mon Sep 17 00:00:00 2001 From: fs Date: Fri, 19 Jun 2026 08:25:05 +0200 Subject: [PATCH] =?UTF-8?q?Banner-Slider:=20Eigenwerbung-Slide=20"Hier=20k?= =?UTF-8?q?=C3=B6nnte=20Ihre=20Werbung=20stehen"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit House-Ad mit TSV-08-Wappen und echtem Foto (fussball-hero) statt der Platzhalter-Slides: wirbt selbst für die Werbefläche, CTA führt intern aufs Kontaktformular (#kontakt). Komponente um generische Props erweitert: variant (CSS-Modifier), tag (Badge-Text) und cta.internal (interner Link ohne target=_blank/rel=sponsored). Neue Styles: rote Glas-/Foto-Variante mit gestricheltem "Werbeplatz frei"-Frame, rot-dunkler Verlauf für Lesbarkeit. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01KDQZ6FuchNUh2bxSW9PeNv --- app/components/banner-slider.php | 11 +- data/banners.json | 32 ++-- public/assets/css/components.css | 254 +++++++++++++++++++++++++++++++ 3 files changed, 272 insertions(+), 25 deletions(-) diff --git a/app/components/banner-slider.php b/app/components/banner-slider.php index 89ee303..5197f52 100644 --- a/app/components/banner-slider.php +++ b/app/components/banner-slider.php @@ -5,6 +5,9 @@ declare(strict_types=1); /** * Werbe-/Sponsoren-Banner-Slider. Daten: data/banners.json (Single Source of Truth). * Layout je Slide: 2/3 Titel + Text + CTA, 1/3 Firmenlogo. + * Pro Slide optional: "variant" (CSS-Modifier, z. B. "house" für Eigenwerbung), + * "tag" (Badge-Text, Default "Anzeige"), "background" (Bild), "cta.internal" + * (interner Link ohne target=_blank/rel=sponsored, für eigene Seiten/Anker). * Auto-Rotation + Fortschritts-Indikatoren übernimmt assets/js/banner.js * (pausiert bei Hover/Fokus, respektiert prefers-reduced-motion). * Ohne JS: nur der erste Banner ist sichtbar (Graceful Degradation). @@ -31,13 +34,15 @@ $total = count($banners);