Mitglied werden: Hub-Seite mit Online-Anmeldung (membership-form + membership-submit-Action, Honeypot + Time-Trap), Abteilungswahl (department-choice), Beitragstabelle (fee-table) und Turn-Aufnahmeantrag als PDF-Download. Daten in data/mitglied-werden.json. Partner werden & Sportheimbuchung: neue Seiten samt Routing und Navigation. Ansprechpartner: echter Hero (Vereinsgelände), Bereiche aus dem group-Feld der Single Source (Fußball / Turnen) zu zwei Sektionen gebündelt, Disziplin als Karten-Überschrift. Fehlende Turn-Disziplin-Leads (Frisque, Lorz, Kornatz, Trotzke) aus den Turnen-Unterseiten extrahiert und in data/ansprechpartner.json ergänzt (allgemeine Turnabteilungs-Mail als Kontakt). WhatsApp für alle Personen mit Telefonnummer. person-grid: kompaktere Karten, Hairline unter der Bereichsüberschrift, 5 Spalten am Desktop. Startseite auf die Haupt-Ansprechpartner je Bereich begrenzt. Dazu: neue Icons (check-circle, download, file-earmark-text, whatsapp), Anpassungen an Header/Footer/CTA/age-groups sowie tokens/layout/utilities. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RZsKTL5kRSG4KkK8w2LKkE
40 lines
1.7 KiB
PHP
40 lines
1.7 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* Abteilungs-Auswahl: gleichwertige Karten, die auf Anker derselben Seite springen.
|
|
* Props:
|
|
* $choice array{title?, intro?, items: [{kicker?, title, text, label, anchor}]}
|
|
* $anchor string (optional, Sektions-ID)
|
|
* Bewusst eigenes <a href="#…">-Markup (nicht die cta-Komponente): cta() schickt
|
|
* jeden Slug durch url() und würde aus "#anker" ein "/#anker" (Startseite) machen.
|
|
*/
|
|
$anchor = $anchor ?? null;
|
|
if (empty($choice['items'])) {
|
|
return;
|
|
}
|
|
?>
|
|
<section class="section department-choice"<?= $anchor ? ' id="' . e($anchor) . '"' : '' ?>>
|
|
<div class="container">
|
|
<?php if (!empty($choice['title'])): ?>
|
|
<h2 class="department-choice__title"><?= e($choice['title']) ?></h2>
|
|
<?php endif; ?>
|
|
<?php if (!empty($choice['intro'])): ?>
|
|
<p class="department-choice__intro"><?= e($choice['intro']) ?></p>
|
|
<?php endif; ?>
|
|
<ul class="department-choice__grid" role="list">
|
|
<?php foreach ($choice['items'] as $item): ?>
|
|
<li class="department-choice__card">
|
|
<h3 class="department-choice__heading"><?= e($item['title']) ?></h3>
|
|
<?php if (!empty($item['subtitle'])): ?>
|
|
<p class="department-choice__subtitle"><?= e($item['subtitle']) ?></p>
|
|
<?php endif; ?>
|
|
<p class="department-choice__text"><?= e($item['text']) ?></p>
|
|
<a class="btn department-choice__btn" href="#<?= e($item['anchor']) ?>"><?= e($item['label']) ?><?= icon('arrow-right', 'department-choice__arrow') ?></a>
|
|
</li>
|
|
<?php endforeach; ?>
|
|
</ul>
|
|
</div>
|
|
</section>
|