Files
tsv08kulmbach-website/app/pages/logo.php

97 lines
4.2 KiB
PHP
Raw Normal View History

<?php
declare(strict_types=1);
/**
* Logo zum Herunterladen. Inhalt: data/logo.json.
* Struktur: Hero → Varianten mit Downloads (samt ZIP-Knopf) → Farben → frühere Logos.
*
* Bewusst KARG (Entscheidung Felix, 17.09.2026): Einleitungstext, Nutzungshinweis,
* Abschnittsüberschrift und FAQ waren gebaut und sind wieder raus. Eine Downloadseite
* ist ein Regal, kein Text: Wappen, Knöpfe, Farben. Wer etwas fragen will, findet den
* Weg über die Fußzeile. Die Überschrift steht noch im DOM, aber visually-hidden,
* damit die Heading-Kette nicht von h1 auf h3 springt.
*
* Die DATEIEN erzeugt bin/logo-build.php nach public/assets/downloads/logo/; diese Seite
* kennt nur die Variantenschlüssel und liest Größen beim Rendern von der Platte.
*/
$page = json_load('logo');
$zip = 'downloads/logo/tsv08-kulmbach-logo-paket.zip';
$zipFile = PUBLIC_PATH . '/assets/' . $zip;
$zipSize = is_file($zipFile) ? number_format(filesize($zipFile) / 1024 / 1024, 1, ',', '.') . ' MB' : '';
// Farbfläche über eine Klasse, nie über ein style-Attribut: die CSP verwirft Inline-Styles
// in Produktion stillschweigend. Die Klasse holt sich den Wert aus dem Token in tokens.css,
// die JSON nennt nur den Namen. Unbekannte Namen fallen still weg.
$farbKlassen = ['accent' => 'accent', 'black' => 'black', 'bg' => 'bg', 'white' => 'white'];
$meta = [
'title' => 'Logo herunterladen',
'description' => 'Unser Vereinswappen zum Herunterladen: als Vektor für die Druckerei, als PNG und JPG für Dokumente und Aushänge, dazu unsere Vereinsfarben.',
'og_image' => 'downloads/logo/tsv08-kulmbach-logo-farbig-1000.jpg',
'schema' => page_schema([
['name' => 'Startseite', 'slug' => ''],
['name' => 'Der Verein', 'slug' => 'verein'],
['name' => 'Logo herunterladen', 'slug' => 'logo'],
]),
];
component('hero', ['hero' => $page['hero']]);
?>
<?php
component('logo-downloads', [
'varianten' => $page['varianten'] ?? [],
'title' => $page['varianten_title'] ?? 'Das aktuelle Wappen',
'title_hidden' => true,
'anchor' => 'varianten',
'paket' => $zipSize === '' ? [] : [
'label' => $page['paket']['label'] ?? 'Alle Dateien als ZIP',
'href' => asset($zip),
'meta' => 'ZIP, ' . $zipSize,
],
]);
?>
<?php if (!empty($page['farben']['items'])): ?>
<section class="section logo-farben" id="farben">
<div class="container">
<header class="logo-farben__head">
<h2><?= e($page['farben']['title']) ?></h2>
<?php if (!empty($page['farben']['text'])): ?>
<p class="logo-farben__intro"><?= e($page['farben']['text']) ?></p>
<?php endif; ?>
</header>
<ul class="logo-farben__grid" role="list">
<?php foreach ($page['farben']['items'] as $farbe): ?>
<?php $klasse = $farbKlassen[$farbe['token'] ?? ''] ?? null; ?>
<li class="logo-farbe">
<?php if ($klasse !== null): ?>
<span class="logo-farbe__swatch logo-farbe__swatch--<?= e($klasse) ?>"></span>
<?php endif; ?>
<div class="logo-farbe__body">
<h3 class="logo-farbe__name"><?= e($farbe['name']) ?></h3>
<dl class="logo-farbe__werte">
<div><dt>HEX</dt><dd><?= e($farbe['hex']) ?></dd></div>
<div><dt>RGB</dt><dd><?= e($farbe['rgb']) ?></dd></div>
<div><dt>CMYK</dt><dd><?= e($farbe['cmyk']) ?></dd></div>
</dl>
<?php if (!empty($farbe['hinweis'])): ?>
<p class="logo-farbe__hinweis"><?= e($farbe['hinweis']) ?></p>
<?php endif; ?>
</div>
</li>
<?php endforeach; ?>
</ul>
</div>
</section>
<?php endif; ?>
<?php
// Rendert nichts, solange retro[] leer ist: alte Vereinslogos liegen bisher nirgends vor.
component('logo-downloads', [
'varianten' => $page['retro'] ?? [],
'title' => $page['retro_title'] ?? 'Frühere Vereinslogos',
'text' => $page['retro_text'] ?? '',
'anchor' => 'frueher',
'tinted' => true,
]);