Audit aller 23 indexierbaren Routen (lokaler Crawl) und Fixes: - Descriptions auf ~130-160 Zeichen; Turnen-Disziplinseiten hatten den kurzen Hero-Teaser als Description, jetzt eigene SERP-Texte - Titles: team-erste gekürzt, sportheimbuchung ohne doppelten Brand - h1->h3-Sprünge behoben: visually-hidden h2 aus JSON-Section-Titeln (sportheimbuchung, partner-werden), sichtbarer choice.title auf mitglied-werden; historie bekommt Breadcrumb-Schema - Neuer Helper img_intrinsic_attrs() liefert width/height aus der Bilddatei (PNG via getimagesize, SVG via viewBox) für Partner-Grid- und Banner-Slider-Logos — kein Layout-Shift mehr Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
24 lines
817 B
PHP
24 lines
817 B
PHP
<?php
|
||
|
||
declare(strict_types=1);
|
||
|
||
/**
|
||
* Vereinshistorie — schmaler Hero + interaktive Timeline.
|
||
* Inhalte: data/historie.json (Single Source of Truth).
|
||
*/
|
||
$historie = json_load('historie');
|
||
|
||
$meta = [
|
||
'title' => 'Vereinshistorie – Der Katzbachtaler Weg',
|
||
'description' => 'Erlebe die bewegte Geschichte des TSV 08 Kulmbach – von den ersten Spielen an der Bayreuther Straße 1947 bis zur Hans-Rausch-Sportanlage im Katzbachtal.',
|
||
'scripts' => ['timeline.js'],
|
||
'schema' => page_schema([
|
||
['name' => 'Startseite', 'slug' => ''],
|
||
['name' => 'Der Verein', 'slug' => 'verein'],
|
||
['name' => 'Vereinshistorie', 'slug' => 'historie'],
|
||
]),
|
||
];
|
||
|
||
component('hero', ['hero' => $historie['hero']]);
|
||
component('timeline', ['events' => $historie['events']]);
|