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