Optionale Live-Seite hinter dem Ergebnis-Rückblick mit Fotos vom letzten Spiel. bin/stadionzeitung-add.php liest sie aus <ordner>/galerie/, Kopf und Alt-Texte sind Chat-Pflege und hängen an source. Preflight meldet fehlende Galerie-Dateien. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PCMNXcfkM9RcaVjqoJjRsz
51 lines
2.1 KiB
PHP
51 lines
2.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* Galerie-Seite der Stadionzeitung (Live-Seite, optional) — Fotos vom letzten
|
|
* Spiel als Bento-Raster: ein großes Aufmacherfoto, die übrigen in kleineren
|
|
* Kacheln darum. Das Raster füllt die ganze Blattfläche unter dem Kopf, die
|
|
* Fotos werden per object-fit auf ihre Kachel beschnitten.
|
|
*
|
|
* Props: $issue Eintrag aus data/stadionzeitung.json. Gelesen wird das Feld
|
|
* `galerie`: `kicker`, `heading`, `text?` sind Chat-Pflege, `bilder[]`
|
|
* (base/widths/alt/source) schreibt bin/stadionzeitung-add.php aus
|
|
* <ordner>/galerie/. Alt-Texte kommen aus dem Chat und hängen an `source`.
|
|
*
|
|
* Die Bilder liegen im Ausgaben-Ordner und werden von keinem Sync angefasst,
|
|
* deshalb braucht die Seite keinen Snapshot.
|
|
*/
|
|
$galerie = is_array($issue['galerie'] ?? null) ? $issue['galerie'] : [];
|
|
$bilder = array_slice(array_values(array_filter(
|
|
$galerie['bilder'] ?? [],
|
|
static fn ($b): bool => is_array($b) && !empty($b['base']) && !empty($b['widths'])
|
|
)), 0, 7);
|
|
$kicker = trim((string) ($galerie['kicker'] ?? 'Rückblick'));
|
|
$heading = trim((string) ($galerie['heading'] ?? 'Fotos vom letzten Spiel'));
|
|
$text = trim((string) ($galerie['text'] ?? ''));
|
|
?>
|
|
<div class="stadionzeitung-galerie">
|
|
<header class="stadionzeitung-page__head">
|
|
<?php if ($kicker !== ''): ?>
|
|
<p class="stadionzeitung-page__kicker"><?= e($kicker) ?></p>
|
|
<?php endif; ?>
|
|
<h2 class="stadionzeitung-page__heading"><?= e($heading) ?></h2>
|
|
<?php if ($text !== ''): ?>
|
|
<p class="stadionzeitung-galerie__text"><?= e($text) ?></p>
|
|
<?php endif; ?>
|
|
</header>
|
|
<?php if ($bilder !== []): ?>
|
|
<div class="stadionzeitung-galerie__bento stadionzeitung-galerie__bento--n<?= count($bilder) ?>">
|
|
<?php foreach ($bilder as $i => $bild): ?>
|
|
<?php component('img', [
|
|
'image' => $bild,
|
|
// Aufmacher gut zwei Drittel der Seitenbreite, die Kacheln ein Drittel.
|
|
'sizes' => $i === 0 ? '(min-width: 520px) 340px, 70vw' : '(min-width: 520px) 240px, 50vw',
|
|
'class' => 'stadionzeitung-galerie__foto',
|
|
]); ?>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
<?php endif; ?>
|
|
</div>
|