Neue Live-Seiten, geschaltet vom chat-gepflegten Feld `veranstaltung` (Slug aus data/veranstaltungen.json) — Programm und Turnierpläne kommen damit aus derselben Quelle wie die Website, nicht als Kopie ins Heft: - Programm-Seite (programm[], rendert zugleich auf /veranstaltungen/sportfest-2026) - vier Turnierplan-Seiten (turniere[]) mit leerer Ergebnisspalte und leerer Abschlusstabelle zum Eintragen am Platz - Gegnerseite je Mannschaft mit Heimspiel am Fest statt nur der tragenden: stadionzeitung_gegner_fixtures() ist die einzige Stelle, die das entscheidet, Seitenplanung und Snapshot lesen beide dort. `gegner` ist deshalb eine Map je Team-Key; die Vorschau überspringt jedes Spiel mit eigener Gegnerseite - Danke-Seite mit Partner-Logo-Wand aus data/partners.json und QR auf /partner-werden, dazu das Anzeigen-Feld `platzierung` für Motive mit festem Platz auf einer Live-Seite (Emons über der Logo-Wand). Vorher klebte der Dank als leere Fläche unten an einem Anzeigen-Bild - Cover einer Sonderausgabe: das Fest als Titelgeschichte statt einer der drei Begegnungen, dazu das Hauptplakat schräg gelegt an Stelle des Spielerfotos Ausgabe 2026-09-04-ats-wartenfels als ENTWURF angelegt, 48 Seiten (12 Bögen), Tabellen auf gerader Seite, längster Anzeigenblock zwei. Veröffentlicht wird auf dem Server, dort liegt der frische Matchcenter-Stand. Nebenbei behoben: bin/anzeige-add.php räumte beim Anlegen alle Motive weg, deren Slug mit demselben Text beginnt (`emons` löschte `emons-partnerdank` und `emons-stuebinger`). Muster jetzt auf die Breiten-Endung eingeschränkt. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KubsajzuV6N6QsSd3xKNjC
66 lines
3.3 KiB
PHP
66 lines
3.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* Danke-Seite der Stadionzeitung (Live-Seite): der Dank an unsere Partner mit
|
|
* der Logo-Wand aus data/partners.json (Single Source, dieselbe Quelle wie die
|
|
* Startseite) und dem QR auf /partner-werden. Gegenstück zur Akquise-Seite
|
|
* stadionzeitung-partner.php: hier stehen die, die schon dabei sind.
|
|
*
|
|
* Vorgeschichte: der Dank war Teil eines Canva-Bilds, das unten an die
|
|
* Emons-Anzeige geklebt war — eine leere Fläche mit Wappen und zwei Zeilen
|
|
* (Felix, 03.09.2026: „sieht schrecklich aus"). Seitdem eine echte Seite, die
|
|
* die Partner auch zeigt statt nur zu erwähnen.
|
|
*
|
|
* Die Anzeige oben ist KEIN Bestandteil der Komponente, sondern kommt als Prop:
|
|
* bin/stadionzeitung-add.php nimmt Anzeigen mit `platzierung: danke` aus dem
|
|
* Streu-Pool und schreibt das Motiv in den Seiteneintrag. Dadurch ist es in
|
|
* images[] eingefroren wie jede andere Anzeige — eine veröffentlichte Ausgabe
|
|
* ändert sich nicht mehr, wenn der Sponsor später ein neues Motiv liefert.
|
|
*
|
|
* Props: $anzeige (Varianten-Set {base,widths,alt} oder null)
|
|
*/
|
|
$anzeige = (is_array($anzeige ?? null) && !empty($anzeige['base'])) ? $anzeige : null;
|
|
$partners = json_load('partners')['partners'] ?? [];
|
|
$qr = is_file(PUBLIC_PATH . '/assets/img/stadionzeitung/qr-partner-werden.png')
|
|
? 'img/stadionzeitung/qr-partner-werden.png'
|
|
: null;
|
|
?>
|
|
<div class="stadionzeitung-danke">
|
|
<?php if ($anzeige !== null): ?>
|
|
<?php component('img', ['image' => $anzeige, 'sizes' => '420px', 'class' => 'stadionzeitung-danke__anzeige']); ?>
|
|
<?php endif; ?>
|
|
<header class="stadionzeitung-page__head stadionzeitung-danke__head">
|
|
<p class="stadionzeitung-page__kicker">Unsere Partner</p>
|
|
<?php /* Überschrift bewusst OHNE Anrede: Partner sind Unternehmen, die wir mit
|
|
„Sie" ansprechen (Sprachregel, CLAUDE.md), ein „danke, dass ihr dabei
|
|
seid" würde sie duzen. „Danke für die Unterstützung" trägt den Dank
|
|
ohne diesen Konflikt, der CTA darunter bleibt in der Sie-Form. */ ?>
|
|
<h2 class="stadionzeitung-page__heading">Danke für die Unterstützung</h2>
|
|
</header>
|
|
<?php if ($partners !== []): ?>
|
|
<ul class="stadionzeitung-danke__logos">
|
|
<?php foreach ($partners as $partner): ?>
|
|
<?php if (empty($partner['logo'])) { continue; } ?>
|
|
<li class="stadionzeitung-danke__logo">
|
|
<img src="<?= e(asset((string) $partner['logo'])) ?>" alt="<?= e((string) ($partner['name'] ?? '')) ?>"<?= img_intrinsic_attrs((string) $partner['logo']) ?> loading="lazy" decoding="async">
|
|
</li>
|
|
<?php endforeach; ?>
|
|
</ul>
|
|
<?php endif; ?>
|
|
<div class="stadionzeitung-page__cta">
|
|
<div class="stadionzeitung-page__cta-text">
|
|
<p class="stadionzeitung-page__cta-label">Mitmachen</p>
|
|
<p class="stadionzeitung-page__cta-title">Werden Sie unser Partner</p>
|
|
<p class="stadionzeitung-page__cta-link"><?= e(club_domain('partner-werden')) ?></p>
|
|
</div>
|
|
<?php if ($qr !== null): ?>
|
|
<div class="stadionzeitung-page__cta-abriss">
|
|
<img class="stadionzeitung-page__cta-qr" src="<?= e(asset($qr)) ?>" alt="" width="60" height="60" loading="lazy" decoding="async">
|
|
<span class="stadionzeitung-page__cta-scan">Scan mich</span>
|
|
</div>
|
|
<?php endif; ?>
|
|
</div>
|
|
</div>
|