Stadionzeitung Ausgabe 2 (TSV Ködnitz, 15.08.): Entwurf + neue Aufruf-Seite
- Neue generische Live-Seite `aufruf` (erste Nutzung: Sportfest-Helferaufruf): Komponente, Dispatcher, Skript-Einbindung (Planung im Aufschlag, QR aus aufruf.link, Feld-Carryover), CSS, optionales kleines Poster rechts. - Ausgabe 2026-08-15-tsv-koednitz als ENTWURF: Vorwort (Benedikt, Revanche dezent), Interview (Ali, 3 Fragen), Sportfest-Helferseite mit Kontakten aus ansprechpartner.json; Rückseite/Cover wie Hutschdorf wiederverwendet. - Interview-Frage größer/prominenter gesetzt. - Sportfest-Plakat-Anzeige deaktiviert (redundant zur Helferseite) -> 40 Seiten. Sync-Dateien (instagram/matchcenter) bleiben gitignored, Snapshot wird beim Veröffentlichen auf dem Server eingefroren. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFnFYLm2MoBskyk9mc84ZW
This commit is contained in:
@@ -51,6 +51,13 @@ declare(strict_types=1);
|
||||
* die Ausgabe die Live-Seite app/components/stadionzeitung-vorwort.php statt des
|
||||
* Fallback-Bilds `vorwort.*`.
|
||||
*
|
||||
* Interview (`interview`-Feld) und die generische Aufruf-Seite (`aufruf`-Feld,
|
||||
* z. B. Sportfest-Helferaufruf) sind wie das Vorwort chat-gepflegt: das Skript
|
||||
* trägt sie über erneute Läufe weiter und plant die Live-Seite nur ein, wenn
|
||||
* das Feld existiert. Reihenfolge im anzeigenfreien Aufschlag: Vorwort →
|
||||
* Interview → Aufruf. Für die Aufruf-Seite erzeugt das Skript zusätzlich den
|
||||
* QR (qr-aufruf.png im Ausgaben-Ordner) aus `aufruf.link`.
|
||||
*
|
||||
* Erneuter Aufruf mit demselben Slug ersetzt die Ausgabe vollständig (alte
|
||||
* Seiten-Bilder werden vorher gelöscht) — idempotent für Korrekturen.
|
||||
*/
|
||||
@@ -179,6 +186,8 @@ foreach ($existing['issues'] ?? [] as $entry) {
|
||||
$oldVorwort = $oldIssue['vorwort'] ?? null;
|
||||
// Interview wie das Vorwort chat-gepflegt — überlebt erneute Läufe ebenso.
|
||||
$oldInterview = $oldIssue['interview'] ?? null;
|
||||
// Aufruf-Seite (z. B. Sportfest-Helferaufruf) ebenso chat-gepflegt.
|
||||
$oldAufruf = $oldIssue['aufruf'] ?? null;
|
||||
|
||||
// --- Ziel-Ordner vorbereiten: bei erneutem Lauf alte Seiten dieser Ausgabe wegräumen ---
|
||||
$destDir = PUBLIC_PATH . "/assets/img/stadionzeitung/{$slug}";
|
||||
@@ -289,6 +298,12 @@ try {
|
||||
if ($oldInterview !== null) {
|
||||
$aufschlag[] = $live('interview');
|
||||
}
|
||||
// Aufruf-Seite (Helferaufruf o. Ä.) reiht sich in denselben anzeigenfreien
|
||||
// Aufschlag ein, direkt hinter Vorwort/Interview — ein redaktioneller
|
||||
// Einstieg ohne Werbung dazwischen (chat-gepflegtes `aufruf`-Feld).
|
||||
if ($oldAufruf !== null) {
|
||||
$aufschlag[] = $live('aufruf');
|
||||
}
|
||||
if ($aufschlag !== []) {
|
||||
$bloecke[] = ['name' => 'aufschlag', 'seiten' => $aufschlag, 'anzeigen_danach' => true];
|
||||
}
|
||||
@@ -553,6 +568,20 @@ foreach (['mitmachen', 'news', 'termine', 'matchcenter', 'mitglied-werden', 'his
|
||||
}
|
||||
}
|
||||
|
||||
// Aufruf-Seite: QR auf das interne Ziel (z. B. /veranstaltungen/sportfest-2026)
|
||||
// aus dem chat-gepflegten `aufruf.link`-Feld. Anders als die geteilten CTA-QRs
|
||||
// ist das Ziel ausgabenspezifisch, deshalb liegt der Code im Ausgaben-Ordner
|
||||
// (qr-aufruf.png) — der wird bei jedem Lauf ohnehin neu befüllt. club_url()
|
||||
// wie überall, damit der gedruckte Code auf die echte Domain zeigt.
|
||||
$aufrufLink = trim((string) ($oldAufruf['link'] ?? ''));
|
||||
if ($aufrufLink !== '') {
|
||||
if (generate_qr_png(club_url($aufrufLink), "{$destDir}/qr-aufruf.png")) {
|
||||
$log("QR-Code für die Aufruf-Seite (/{$aufrufLink}) erzeugt.");
|
||||
} else {
|
||||
$log('QR-Code für die Aufruf-Seite konnte nicht erzeugt werden — die Seite rendert ohne QR.', 'WARN');
|
||||
}
|
||||
}
|
||||
|
||||
// Momente-Seite: QR aufs Instagram-Profil (externe URL aus club.json, die
|
||||
// einzige Nicht-Website-Adresse unter den Heft-QRs — ein gedruckter Code,
|
||||
// keine Einbindung, Regel 1 bleibt unberührt).
|
||||
@@ -620,6 +649,7 @@ $issues[] = [
|
||||
'qr_image' => $qrImage,
|
||||
'vorwort' => $oldVorwort,
|
||||
'interview' => $oldInterview,
|
||||
'aufruf' => $oldAufruf,
|
||||
'verfasser_photo' => $verfasserPhoto,
|
||||
'termine_snapshot' => $termineSnapshot,
|
||||
'images' => $images,
|
||||
|
||||
Reference in New Issue
Block a user