Files
tsv08kulmbach-website/app/components/next-matches.php

62 lines
2.3 KiB
PHP
Raw Normal View History

Matchcenter: „Nächste Spiele" als Band statt Autoplay-Slider Der Bereich wirkte deplatziert: der Track war auf 620px begrenzt und zeigte eine Folie, wodurch die Karte auf breiten Fenstern in ~840px Totraum schwebte; dazu derselbe Hintergrund wie der Hero direkt darüber, kein Akzent, und ein einsames „:" zwischen den Wappen, das wie ein fehlendes Ergebnis aussah. Neu als abgesetztes Band (.section--sunken, nutzt endlich das dafür vorgesehene, bisher unbenutzte Token --clr-bg-deep) mit roter Oberkante: links der Aufmacher (match-feature), rechts die folgenden Termine als verlinkte match-row-Zeilen ohne Kartenfläche. Der Aufmacher ist die große Variante der Terminzeile — Heim über Gast, linksbündig, gleiche Struktur wie die Zeilen daneben. Bewusst nur drei typografische Rollen (Meta-Zeile · Vereinsnamen in Coolvetica · Anstoßzeile mit Countdown) statt der acht der ersten Fassung, ohne Badges, Icons oder Button. Die eigene Mannschaft wird über Helligkeit markiert, nicht über font-weight — Coolvetica hat nur einen Schnitt, bold wäre synthetisch. match-row bekommt optionale $href/$meta-Props; Raster und Innenabstand liegen jetzt im __link-Wrapper, damit als Link die ganze Zeilenfläche klickbar ist. Neue Helper match_when() (ISO + deutscher Countdown, explizit Europe/Berlin, weil PHP global auf UTC läuft) und match_competition_label(). match-slider.php und match-card.php entfallen — Letztere wurde ausschließlich vom Slider genutzt. carousel.js treibt damit nur noch den Banner-Slider der Startseite und wird im Matchcenter nicht mehr geladen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-27 00:39:57 +02:00
<?php
declare(strict_types=1);
/**
* „Nächste Spiele"-Band (teamübergreifend): abgesetzte dunklere Fläche mit roter
* Oberkante, links der Aufmacher (das zeitlich nächste Spiel aller Mannschaften),
* rechts die folgenden Termine als kompakte, anklickbare Zeilen. Props:
* $matches data/matchcenter.json upcoming[] (chronologisch)
* $teams data/matchcenter.json teams[] (liefert Liganame + Sprungmarke)
* Leer nichts rendern.
*/
$matches = $matches ?? [];
$teams = $teams ?? [];
if ($matches === []) {
return;
}
// Liganame und Sprungmarke je Mannschaft vorbereiten, damit die Karten nicht
// selbst in den Teams suchen müssen. Anker wie in matchcenter-section.php.
$leagues = [];
$anchors = [];
foreach ($teams as $t) {
$key = (string) ($t['key'] ?? '');
if ($key === '') {
continue;
}
$leagues[$key] = (string) ($t['league'] ?? '');
$anchors[$key] = '#team-' . preg_replace('/[^a-z0-9-]+/', '', strtolower($key));
}
$feature = array_shift($matches);
$featureKey = (string) ($feature['team_key'] ?? '');
?>
<section class="section section--sunken next-matches" id="naechste-spiele">
<div class="container">
<h2 class="next-matches__title">Nächste Spiele</h2>
<div class="next-matches__grid">
<?php component('match-feature', [
'match' => $feature,
'team_name' => $feature['team_name'] ?? '',
'league' => $leagues[$featureKey] ?? '',
'href' => $anchors[$featureKey] ?? null,
]); ?>
<?php if ($matches !== []): ?>
<div class="next-matches__list">
<h3 class="next-matches__list-title">Danach</h3>
<ul class="match-list match-list--plain">
<?php foreach ($matches as $m): ?>
<?php component('match-row', [
'match' => $m,
'meta' => $m['team_name'] ?? '',
'href' => $anchors[(string) ($m['team_key'] ?? '')] ?? null,
]); ?>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
</div>
</div>
</section>