SEO Update

This commit is contained in:
2026-01-23 19:43:42 +00:00
parent 9c70816fb6
commit 5967fc29a7
10 changed files with 290 additions and 32 deletions
+8 -8
View File
@@ -465,12 +465,12 @@
"tickets_info": "",
"reserve_by_mail": true,
"reserve_email": "walschleber.kultour@gmail.com",
"catering": "",
"catering": "Für das leibliche Wohl ist gesorgt",
"tags": "Live Reportage",
"description": "Martin Engelmann\r\nAUF DER SUCHE NACH ITALIEN\r\nGeschichten von Sehnsucht, Glück und Hoffnung\r\n\r\n29.01.2026 / 19.30Uhr / Lindenhof Walschleben \r\n\r\nIm Jahr 2010 wird Martin Engelmann vom renommierten Wochenmagazin „DIE ZEIT“ beauftragt, eine Reportage über Südtirol zu fotografieren. Auf seiner Reise durch die majestätischen Dolomiten erwachen in ihm Erinnerungen an eine zauberhafte Kindheit und die unvergesslichen Familienurlaube an der italienischen Adria. Martin Engelmann begibt sich in den folgenden Jahren auf Spurensuche nach Italien, um die Sehnsuchtsorte seiner Kindheit zu finden und neue Regionen zu entdecken. Es ist die Geburtsstunde eines jahrelangen Foto- und Filmprojekts über Martin Engelmanns persönliches Sehnsuchtsland Italien.\r\nIn der märchenhaften Wasserstadt Venedig erlebt er den farbenfrohen Karneval mit all\r\nseinen farbenfrohen Nuancen. Wenig später begibt er sich auf die historischen Pfade des Franziskuswegs, um zu Fuß die sanften Hügel der Toskana, Umbriens und Latiums zu durchwandern, bis er schließlich vor den antiken Mauern Roms steht. Jahr für Jahr kehrt Martin Engelmann nach Italien zurück, tief berührt von den Begegnungen mit den\r\nMenschen, die ihre Geschichten von Sehnsucht, Glück und Hoffnung mit ihm teilen.\r\n\r\nDen Spuren der Antike folgend, führen seine Reisen in die pulsierende Metropole Neapel\r\nund das versunkene Pompeji. Hier atmet Italien Geschichte. Nur einen Steinwurf vom\r\nSchatten des Vesuv entfernt eröffnet sich die prachtvollste Küstenlandschaft der Welt: die Amalfiküste und das malerische Capri, die als Inbegriff des Dolce Vita gelten. Martin\r\nEngelmanns Reise findet ihren Höhepunkt im Süden, wo Kalabrien, Apulien, Sizilien und\r\nSardinien mit ihrer unvergleichlichen Vielfalt begeistern. Hier hat die harmonische\r\nVerbindung zwischen Mensch und Natur die Regionen geprägt, und erzählt die Geschichten derjenigen, die sich nach einem einfachen, erfüllten Leben sehnen.\r\n\r\n„Auf der Suche nach Italien“ zeichnet ein opulentes Bild eines der schönsten Länder unserer Erde. Entstanden ist eine Ode an die Menschlichkeit, die Vielfalt und die Schönheit, die unsalle miteinander verbindet, wenn die Frage gestellt wird, was es wirklich bedeutet, Italien zusuchen und zu finden. \r\nDie neue Live-Multivision „Auf der Suche nach Italien“ zeichnet ein opulentes Bild eines der schönsten Länder unserer Erde. Entstanden ist eine Ode an die Menschlichkeit, die Vielfalt und die Schönheit, die uns alle miteinander verbindet, wenn die Frage gestellt wird, was es wirklich bedeutet, Italien zu suchen und zu finden.\r\nErleben Martin Engelmann live auf dem Saal im Lindenhof Walschleben. Einlass ist ab 19.00 Uhr. Für das leibliche Wohl ist am Veranstaltungsabend gesorgt.\r\nKarten bekommen Sie im Vorverkauf im Blumenhof Kerst, Erfurter Straße 29b, 99189 Walschleben, Tel.: 036201/62358 und an der Abendkasse.\r\n\r\n Wir freuen uns auf Ihren Besuch,\r\nIhr Team der Walschleber KulTour.",
"image": "/uploads/event_20250915_172956_d35b9177.jpg",
"slug": "auf-der-suche-nach-italien-2026-01-29",
"updated_at": "2026-01-20T18:03:26+01:00"
"updated_at": "2026-01-23T20:38:38+01:00"
},
{
"id": "evt_4e56fe21253e",
@@ -485,12 +485,12 @@
"tickets_info": "",
"reserve_by_mail": true,
"reserve_email": "walschleber.kultour@gmail.com",
"catering": "",
"catering": "Für das leibliche Wohl ist gesorgt",
"tags": "Live Reportage",
"description": "SCHOTTLAND Weite Horizonte\r\n\r\nEine live präsentierte Multivision von Hartmut Krinitz\r\n\r\n27.02.2026 / 19.30Uhr / Lindenhof Walschleben \r\n\r\nEuropas Vorposten im Nordwesten zeigt sich als Land der Kontraste.\r\nGrandiose Naturlandschaften treffen auf die ungleichen Metropolen Glasgow und Edinburgh, keltische Wurzeln mischen sich mit der Moderne, Avantgardearchitektur verblasst neben prähistorischen Steinkreisen, wo schon Feuer brannten als die Pyramiden von Gizeh noch nicht standen.\r\n\r\nTheodor Fontane, Robert Louis Stevenson, Sir Walter Scott und Robert Burns haben es bedichtet, das Land der Dudelsäcke und fliegenden Baumstämme und bis heute schneidert Gary Smyth in den Highlands den Kilt, webt Kathy Campbell auf den weltabgelegenen Hebriden Tweed und brennt Ian Mackintosh in der Speyside Single Malt Whisky, während Adrian Shine seit 30 Jahren nach den Geheimnissen des Loch Ness und seiner langhalsigen Bewohner forscht.\r\n\r\nZu Castles und mystischen Stätten, schroffen Bergen und Leuchttürmen in weiten Küstenlandschaften führt diese live präsentierte Multivision. Geprägt wird sie durch zahlreiche Literaturzitate und die Porträts von historischen und heute lebenden Schotten.\r\n\r\nHartmut Krinitz hat mehr als drei Jahre in Schottland verbracht und porträtiert dieses „Land der weiten Horizonte“ zu verschiedenen Jahreszeiten und aus den unterschiedlichsten Perspektiven.\r\n\r\nDer Buchautor und Europa-Spezialist Hartmut Krinitz wurde für die Multivision „Schottland Weite Horizonte“ mit dem Prädikat LEICAVISION ausgezeichnet, das für herausragende Fotografie und Rhetorik vergeben wird. \r\n\r\nSeine Bildbände zu Schottland sind im Stürtz Verlag erschienen.\r\n\r\nWeitere Informationen und Fotos unter www.hartmut-krinitz.de\r\n\r\nZur Person\r\n\r\nDer Europa-Spezialist Hartmut Krinitz zählt mit mehr als 1500 erfolgreich durchgeführten Veranstaltungen zu den gefragtesten Vortragsreferenten im deutschsprachigen Raum. \r\n\r\nAls professioneller Reisejournalist hat er bei renommierten Verlagen über 35 Bildbände und mehr als 80 Kalender zu europäischen Themen veröffentlicht. Seine Bilder erscheinen weltweit in führenden Magazinen.\r\n\r\nEr ist Mitglied der etablierten Bildagenturen hémis in Paris und laif in Köln, 2. Vorsitzender der GBV (Gesellschaft für Bild und Vortrag), berufenes Mitglied der DGPh (Deutsche Gesellschaft für Photographie) und Autor eines Lehrbuches zu Multivisionen.\r\n\r\nDurch regelmäßige, oft monatelange Aufenthalte gewinnt Hartmut Krinitz einen sehr persönlichen Bezug zu den bereisten Zielen. \r\n\r\nBei seinen Vorträgen verbindet er hochklassige Fotografie, Literaturauszüge, Originaltöne und fundierten Live-Kommentar zu einem eigenständigen Stil.\r\n\r\nErleben Martin Engelmann live auf dem Saal im Lindenhof Walschleben. Einlass ist ab 19.00 Uhr. Für das leibliche Wohl ist am Veranstaltungsabend gesorgt.\r\n\r\nKarten bekommen Sie im Vorverkauf im Blumenhof Kerst, Erfurter Straße 29b, 99189 Walschleben, Tel.: 036201/62358 und an der Abendkasse.\r\n\r\nWir freuen uns auf Ihren Besuch,\r\n\r\nIhr Team der Walschleber KulTour.",
"image": "/uploads/event_20250917_212102_3c046a84.jpg",
"slug": "schottland-weite-horizonte-2026-02-27",
"updated_at": "2026-01-23T20:25:25+01:00"
"updated_at": "2026-01-23T20:38:32+01:00"
},
{
"id": "evt_cf621116b992",
@@ -505,12 +505,12 @@
"tickets_info": "",
"reserve_by_mail": true,
"reserve_email": "walschleber.kultour@gmail.com",
"catering": "",
"catering": "Für das leibliche Wohl ist gesorgt",
"tags": "Live Reportage",
"description": "LIGURIEN NEU ERFAHREN \r\nLive-Vortrag von Harald Philipp\r\nEin Mountainbike-Abenteuer zwischen Wurzeln und Wandel\r\n07.03.2026 / 19.30Uhr / Lindenhof Walschleben \r\n\r\nHarald Philipp zeigt Ligurien jenseits der Postkartenmotive: ein Mountainbike-Abenteuer vom Mittelmeer in die Alpenkämme. Uralte Maultierwege, offene Grate und neue Biketrails live erzählt und von sechs Filmsequenzen begleitet. Es geht nicht um Rekorde, sondern um Substanz: um Wege, die verbinden, um Dörfer, die atmen, und um Trailbau, der Zukunft schafft.\r\nHarald Philipp steht für Bike-Mountaineering zwischen Grat, Gipfel und fahrbaren Klettersteigen. Ligurien Neu Erfahren ist sein fünfter Live-Vortrag. Seit mehreren Jahren lebt er im ligurischen Hinterland, ist in der Szene verankert und reaktiviert alte Pfade nah an Landschaft, Menschen und den Fragen einer Region im Wandel.\r\nDas E-MTB ist hier kein Dogma, sondern ein Werkzeug. Es öffnet bergauf Singletrails, die sonst geschoben würden, und macht Runden jenseits der üblichen Shuttle-Runs möglich. Wir fahren auf bestehenden, oft vergessenen Pfaden legal, respektvoll und mit lokaler Kenntnis. Ergebnis: weniger Shuttle, mehr echtes Fahren; technische Kletterpassagen bergauf, konzentrierte Abfahrten bergab.\r\nErleben Harald Philipp live auf dem Saal im Lindenhof Walschleben. Einlass ist ab 19.00 Uhr. Für das leibliche Wohl ist am Veranstaltungsabend gesorgt.\r\nKarten bekommen Sie im Vorverkauf im Blumenhof Kerst, Erfurter Straße 29b, 99189 Walschleben, Tel.: 036201/62358 und an der Abendkasse.\r\n\r\n Wir freuen uns auf Ihren Besuch,\r\nIhr Team der Walschleber KulTour.",
"image": "/uploads/event_20250915_173205_6a9a8f04.jpg",
"slug": "ligurien-neu-erfahren-2026-03-07",
"updated_at": "2026-01-23T20:32:20+01:00"
"updated_at": "2026-01-23T20:38:22+01:00"
},
{
"id": "evt_c8d99a462629",
@@ -543,12 +543,12 @@
"tickets_info": "",
"reserve_by_mail": true,
"reserve_email": "walschleber.kultour@gmail.com",
"catering": "",
"catering": "Für das leibliche Wohl ist gesorgt",
"tags": "Live Reportage",
"description": "NEUSEELAND\r\n\"200 Tage am schönsten Ende der Welt\"\r\nEine Film- & Fotoreportage von Petra und Gerhard Zwerger-Schoner\r\n\r\n19.03.2026 / 19.30Uhr / Lindenhof Walschleben \r\n\r\nTraumstraßen entlang unberührter Küsten und schneebedeckte Gipfel über immergrünem Regenwald, rauchende Vulkane und brodelnd thermale Wunderwelten, idyllisches Farmland und geschichtsträchtige Orte mit stolzer Maorikultur auf heiligem Land. Das alles ist Neuseeland und noch viel mehr. Neuseelands Schönheit hat unzählige Gesichter und kaum ein Land offenbart seine Reize in derart beeindruckender Vielfalt.\r\n\r\nEin gutes halbes Jahr haben die österreichischen Reisejournalisten Petra & Gerhard Zwerger-Schoner „Aotearoa - das Land der langen weißen Wolke“ bereist, kennen und lieben gelernt. \r\nNur knapp vier Millionen Menschen besiedeln die beiden südpazifischen Inseln, deren Lage über den tektonischen Platten des „Feuerrings“ im Pazifik eine Landschaft hervorbrachte, die einzigartig auf der Welt ist, einem oft schlicht den Atem verschlägt und sprachlos macht. Nicht ohne Grund bildet die sagenhafte Schönheit Neuseelands die Kulisse für Tolkiens \"Mittelerde\", die Millionen von Zuschauern in der \"Herr-der-Ringe Trilogie\" und in \"Der Hobbit\" verzaubert. \r\nNeuseeland gilt für viele als Traumreiseziel, ein Land, in dem die Freiheit gelebt wird und sich Bürokratie und Reglements noch in Grenzen halten. Die lockere, legere Lebensart der \"Kiwis\", wie sich die Neuseeländer selbst gerne nennen, ist legendär. Die Landschaften sind von bizarrer Schönheit, sanft und hügelig oder rau und schroff. Die Intensität der Farben erscheint oft surreal, die Weite schier endlos und sie vermittelt hautnah die Kleinheit und Nichtigkeit des Einzelnen, die Stille bewahrt Raum für Träume. Neuseeland ist einfach anders: Es befreit, erdet den Geist, vermittelt tiefe Ruhe und berührt die Seele. Neuseeland ist ein optischer Leckerbissen, ein Land mit freundlichen, entspannten Menschen, Heimat für seltene Tiere, wie Pelzrobben, Pinguine oder den besonders rar gewordenen Kiwi, sowie Schutzgebiet für Urwälder, Gletscher und sensible marine Lebensräume. \r\n\r\nUnterwegs mit Reisecamper oder Geländewagen, mit Helikopter oder Flugzeug, mit dem Kanu oder zu Fuß, machte sich das Abenteurer-Paar auf, dieses Land in seiner enormen Vielfältigkeit zu entdecken. Tauchen Sie ein, in ein spannendes Reiseabenteuer und seien Sie auf ein einzigartiges Erlebnis gefasst - aufregend, witzig, informativ und äußerst kurzweilig! Lauschen Sie neugierig den lebensnahen Erzählungen der beiden Reisenden und lassen Sie sich von oftmals ungewöhnlich intensiven Eindrücken begeistern. Eindrücke, die sich all jenen eröffnen, die Zeit haben, eine Reise mit sämtlichen Sinnen zu erfahren. \r\n\"The Earth has Music for those who listen\", schrieb einst William Shakespeare. Petra und Gerhard Zwerger-Schoner haben zugehört und präsentieren Ihnen Neuseeland wie sie es noch nicht gesehen haben. \r\nEine faszinierende und bildgewaltige Reisereportage, voller brillanter Filmszenen, gemischt mit meisterhafter Fotografie. Ein audiovisuelles Erlebnis modernster Machart, in High Definition Digital Cinema Qualität.\r\nErleben Petra und Gerhard Zwerger-Schoner live auf dem Saal im Lindenhof Walschleben. Einlass ist ab 19.00 Uhr. Für das leibliche Wohl ist am Veranstaltungsabend gesorgt.\r\nKarten bekommen Sie im Vorverkauf im Blumenhof Kerst, Erfurter Straße 29b, 99189 Walschleben, Tel.: 036201/62358 und an der Abendkasse.\r\n\r\n Wir freuen uns auf Ihren Besuch,\r\nIhr Team der Walschleber KulTour.",
"image": "/uploads/event_20250916_065906_64e18fcb.jpg",
"slug": "neuseeland-2026-03-19",
"updated_at": "2026-01-23T20:31:38+01:00"
"updated_at": "2026-01-23T20:38:16+01:00"
},
{
"id": "evt_9ca991af63c5",
+179
View File
@@ -0,0 +1,179 @@
<?php
declare(strict_types=1);
require_once __DIR__ . '/functions.php';
$slug = trim((string)($_GET['slug'] ?? ''));
$id = trim((string)($_GET['id'] ?? ''));
$events = load_events();
$event = null;
foreach ($events as $e) {
if ($slug !== '' && !empty($e['slug']) && $e['slug'] === $slug) {
$event = $e;
break;
}
}
if ($event === null && $id !== '') {
foreach ($events as $e) {
if (!empty($e['id']) && $e['id'] === $id) {
$event = $e;
break;
}
}
}
if ($event) {
$pageTitle = $event['title'] . ' | ' . SITE_NAME;
$descSource = $event['description'] ?? '';
if (trim($descSource) === '') {
$descSource = 'Details zum Termin der ' . SITE_NAME . '.';
}
$metaDescription = mb_strimwidth(strip_tags($descSource), 0, 180, '…');
$canonical = event_url($event);
$jsonld = render_event_jsonld_graph([$event]);
$isUpcoming = is_upcoming($event);
} else {
http_response_code(404);
$pageTitle = 'Termin nicht gefunden | ' . SITE_NAME;
$metaDescription = 'Der gesuchte Termin wurde nicht gefunden.';
$canonical = BASE_URL . '/event.php';
$jsonld = '';
$isUpcoming = true;
}
?>
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<title><?= h($pageTitle) ?></title>
<meta name="description" content="<?= h($metaDescription) ?>">
<link rel="canonical" href="<?= h($canonical) ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta property="og:title" content="<?= h($pageTitle) ?>">
<meta property="og:description" content="<?= h($metaDescription) ?>">
<meta property="og:type" content="website">
<meta property="og:url" content="<?= h($canonical) ?>">
<meta property="og:image" content="<?= h($event && !empty($event['image']) ? BASE_URL . $event['image'] : BASE_URL . DEFAULT_OG_IMAGE) ?>">
<meta name="twitter:card" content="summary_large_image">
<?php if (!$event): ?>
<meta name="robots" content="noindex,follow">
<?php endif; ?>
<?php if ($jsonld !== ''): ?>
<script type="application/ld+json"><?= $jsonld ?></script>
<?php endif; ?>
<link rel="icon" href="/assets/logo.png" sizes="32x32" type="image/png">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="/assets/styles.css">
</head>
<body>
<nav class="navbar navbar-expand-lg bg-body-tertiary border-bottom sticky-top">
<div class="container">
<a class="navbar-brand brand-logo" href="index.html">
<img src="/assets/logo.png" alt="Walschleber KulTour Logo" height="34" width="34">
<span><?= h(SITE_NAME) ?></span>
</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#nav"><span class="navbar-toggler-icon"></span></button>
<div id="nav" class="collapse navbar-collapse">
<ul class="navbar-nav ms-auto">
<li class="nav-item"><a class="nav-link" href="programm.php">Programm</a></li>
<li class="nav-item"><a class="nav-link" href="vergangene-vortraege.php">Vergangene Vorträge</a></li>
<li class="nav-item"><a class="nav-link" href="ueber-uns.html">Über uns</a></li>
<li class="nav-item"><a class="nav-link" href="kontakt.html">Kontakt</a></li>
</ul>
</div>
</div>
</nav>
<header class="py-5 bg-light border-bottom">
<div class="container">
<h1 class="display-6 mb-2"><?= $event ? h($event['title']) : 'Termin nicht gefunden' ?></h1>
<?php if ($event): ?>
<p class="text-muted mb-0">
<?= date('d.m.Y', strtotime($event['date'])) ?> · <?= h($event['time'] ?: '19:30') ?>
<?php if (!empty($event['speaker'])): ?> · mit <?= h($event['speaker']) ?><?php endif; ?>
</p>
<?php else: ?>
<p class="text-muted mb-0">Bitte prüfe den Link oder schau ins Programm.</p>
<?php endif; ?>
</div>
</header>
<main class="container my-5">
<?php if (!$event): ?>
<div class="alert alert-warning">Dieser Termin existiert nicht oder wurde entfernt.</div>
<a class="btn btn-brand" href="programm.php">Zum Programm</a>
<?php else: ?>
<div class="row g-4">
<div class="col-lg-6">
<div class="p-4 border rounded-3 h-100 bg-white">
<?php if (!empty($event['image'])): ?>
<img src="<?= h($event['image']) ?>" alt="<?= h($event['title']) ?>" class="img-fluid rounded mb-3">
<?php endif; ?>
<?php if (!empty($event['description'])): ?>
<div class="mb-0"><?= render_rich_text($event['description']) ?></div>
<?php else: ?>
<p class="text-muted mb-0">Details folgen in Kürze.</p>
<?php endif; ?>
</div>
</div>
<div class="col-lg-6">
<div class="p-4 border rounded-3 h-100 bg-white">
<p class="section-kicker mb-1">Auf einen Blick</p>
<h2 class="h4 mb-3">Termin-Details</h2>
<ul class="list-unstyled mb-4">
<li class="mb-2"><strong>Datum:</strong> <?= date('d.m.Y', strtotime($event['date'])) ?></li>
<li class="mb-2"><strong>Uhrzeit:</strong> <?= h($event['time'] ?: '19:30') ?></li>
<?php if (!empty($event['speaker'])): ?>
<li class="mb-2"><strong>Referent:</strong> <?= h($event['speaker']) ?></li>
<?php endif; ?>
<?php if (!empty($event['venue_name'])): ?>
<li class="mb-2"><strong>Ort:</strong> <?= h($event['venue_name']) ?></li>
<?php endif; ?>
<?php if (!empty($event['venue_address'])): ?>
<li class="mb-2"><strong>Adresse:</strong> <?= h($event['venue_address']) ?></li>
<?php endif; ?>
<?php if (!empty($event['price'])): ?>
<li class="mb-2"><strong>Preis:</strong> <?= h($event['price']) ?></li>
<?php endif; ?>
<?php if (!empty($event['doors_open'])): ?>
<li class="mb-2"><strong>Einlass:</strong> <?= h($event['doors_open']) ?></li>
<?php endif; ?>
<?php if (!empty($event['tags'])): ?>
<li class="mb-2"><strong>Tags:</strong> <?= h($event['tags']) ?></li>
<?php endif; ?>
</ul>
<?php if (!empty($event['tickets_info'])): ?>
<p class="mb-3"><strong>Ticket/VVK:</strong> <?= render_rich_text($event['tickets_info']) ?></p>
<?php endif; ?>
<div class="d-flex flex-wrap gap-2">
<a class="btn btn-brand" href="<?= $isUpcoming ? 'programm.php' : 'vergangene-vortraege.php' ?>">
<?= $isUpcoming ? 'Zum Programm' : 'Zum Archiv' ?>
</a>
<a class="btn btn-outline-brand" href="kontakt.html">Kontakt aufnehmen</a>
</div>
</div>
</div>
</div>
<?php endif; ?>
</main>
<footer class="py-4 border-top">
<div class="container small d-flex gap-3 flex-wrap align-items-center">
<span>&copy; <?= date('Y') ?> <?= h(SITE_NAME) ?></span>
<span class="separator">•</span><a href="impressum.html">Impressum</a>
<span class="separator">•</span><a href="datenschutz.html">Datenschutz</a>
</div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
+15 -1
View File
@@ -56,6 +56,20 @@ function make_slug(string $title, string $date): string {
return $t . '-' . $date;
}
function event_path(array $event): string {
if (!empty($event['slug'])) {
return '/event.php?slug=' . rawurlencode($event['slug']);
}
if (!empty($event['id'])) {
return '/event.php?id=' . rawurlencode($event['id']);
}
return '/event.php';
}
function event_url(array $event): string {
return rtrim(BASE_URL, '/') . event_path($event);
}
function sanitize_text(string $s): string {
return trim($s);
}
@@ -103,6 +117,7 @@ function render_event_jsonld_graph(array $events): string {
$graph[] = array_filter([
"@type" => "Event",
"name" => $e['title'],
"url" => event_url($e),
"startDate" => $start,
"eventStatus" => "https://schema.org/EventScheduled",
"eventAttendanceMode" => "https://schema.org/OfflineEventAttendanceMode",
@@ -214,4 +229,3 @@ function render_rich_text(string $input): string {
return $html;
}
+23 -1
View File
@@ -15,6 +15,24 @@
<meta property="og:image" content="https://walschleber-kultour.com/assets/og-default.jpg">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Walschleber KulTour",
"url": "https://walschleber-kultour.com/",
"logo": "https://walschleber-kultour.com/assets/logo.png",
"email": "walschleber.kultour@gmail.com",
"address": {
"@type": "PostalAddress",
"streetAddress": "Erfurter Straße 29b",
"postalCode": "99189",
"addressLocality": "Walschleben",
"addressCountry": "DE"
}
}
</script>
<link rel="icon" href="/assets/logo.png" sizes="32x32" type="image/png">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="/assets/styles.css">
@@ -98,7 +116,11 @@
<h2 class="h4 mb-3 mb-lg-0">Aktuelle Highlights</h2>
<a class="btn btn-brand" href="programm.php">Alle Termine ansehen</a>
</div>
<p class="text-muted mb-0 mt-3">Die Übersicht der kommenden Veranstaltungen findest du im Programm.</p>
<p class="text-muted mb-0 mt-3">
Die Übersicht der kommenden Veranstaltungen findest du im <a href="programm.php">Programm</a>.
Im <a href="vergangene-vortraege.php">Archiv</a> gibt es Rückblicke auf frühere Abende und unter
<a href="ueber-uns.html">Über uns</a> lernst du das Team kennen.
</p>
</div>
</section>
</main>
+18
View File
@@ -14,6 +14,24 @@
<meta property="og:image" content="https://walschleber-kultour.com/assets/og-default.jpg">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Walschleber KulTour",
"url": "https://walschleber-kultour.com/",
"logo": "https://walschleber-kultour.com/assets/logo.png",
"email": "walschleber.kultour@gmail.com",
"address": {
"@type": "PostalAddress",
"streetAddress": "Erfurter Straße 29b",
"postalCode": "99189",
"addressLocality": "Walschleben",
"addressCountry": "DE"
}
}
</script>
<link rel="icon" href="/assets/logo.png" sizes="32x32" type="image/png">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="/assets/styles.css">
+4 -4
View File
@@ -104,7 +104,7 @@ $jsonld = render_event_jsonld_graph($upcoming);
</div>
<div class="row g-4">
<?php foreach ($upcoming as $e): $mid = 'event-'.h($e['id']); ?>
<?php foreach ($upcoming as $e): $mid = 'event-'.h($e['id']); $detailPath = event_path($e); ?>
<div class="col-md-6 col-lg-4">
<article class="poster-card position-relative h-100"
data-bs-toggle="modal" data-bs-target="#<?= $mid ?>"
@@ -189,8 +189,8 @@ $jsonld = render_event_jsonld_graph($upcoming);
$mailto = 'mailto:' . $reserveTo . '?subject=' . $subject . '&body=' . $body;
}
?>
<?php if (!empty($reserveEnabled) || $ticketUrl): ?>
<div class="mt-3 d-grid gap-2 d-sm-flex justify-content-center">
<a class="btn btn-outline-secondary btn-sm" href="<?= h($detailPath) ?>" onclick="event.stopPropagation()">Details</a>
<?php if (!empty($reserveEnabled)): ?>
<a class="btn btn-accent btn-sm" href="<?= h($mailto) ?>" onclick="event.stopPropagation()">Tickets per Mail reservierbar</a>
<?php endif; ?>
@@ -198,8 +198,8 @@ $jsonld = render_event_jsonld_graph($upcoming);
<a class="btn btn-brand btn-sm" href="<?= h($ticketUrl) ?>" target="_blank" rel="noopener" onclick="event.stopPropagation()">Tickets sichern</a>
<?php endif; ?>
</div>
<?php elseif (!empty($e['tickets_info'])): ?>
<div class="mt-3 small text-muted"><strong>Tickets:</strong> <?= h($e['tickets_info']) ?></div>
<?php if (empty($reserveEnabled) && !$ticketUrl && !empty($e['tickets_info'])): ?>
<div class="mt-2 small text-muted"><strong>Tickets:</strong> <?= h($e['tickets_info']) ?></div>
<?php endif; ?>
<a href="#<?= $mid ?>" class="stretched-link" data-bs-toggle="modal" data-bs-target="#<?= $mid ?>" aria-hidden="true" tabindex="-1"></a>
+3 -1
View File
@@ -1 +1,3 @@
robots.txt
User-agent: *
Allow: /
Sitemap: https://walschleber-kultour.com/sitemap.xml
+9 -8
View File
@@ -1,11 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://walschleber-kultour.com/</loc><lastmod>2025-08-23</lastmod></url>
<url><loc>https://walschleber-kultour.com/programm.php</loc><lastmod>2025-08-23</lastmod></url>
<url><loc>https://walschleber-kultour.com/vergangene-vortraege.php</loc><lastmod>2025-08-23</lastmod></url>
<url><loc>https://walschleber-kultour.com/ueber-uns.html</loc><lastmod>2025-08-23</lastmod></url>
<url><loc>https://walschleber-kultour.com/kontakt.html</loc><lastmod>2025-08-23</lastmod></url>
<url><loc>https://walschleber-kultour.com/newsletter.html</loc><lastmod>2025-08-23</lastmod></url>
<url><loc>https://walschleber-kultour.com/impressum.html</loc><lastmod>2025-08-23</lastmod></url>
<url><loc>https://walschleber-kultour.com/datenschutz.html</loc><lastmod>2025-08-23</lastmod></url>
<url><loc>https://walschleber-kultour.com/</loc><lastmod>2026-01-23</lastmod></url>
<url><loc>https://walschleber-kultour.com/programm.php</loc><lastmod>2026-01-23</lastmod></url>
<url><loc>https://walschleber-kultour.com/vergangene-vortraege.php</loc><lastmod>2026-01-23</lastmod></url>
<url><loc>https://walschleber-kultour.com/ueber-uns.html</loc><lastmod>2026-01-23</lastmod></url>
<url><loc>https://walschleber-kultour.com/kontakt.html</loc><lastmod>2026-01-23</lastmod></url>
<url><loc>https://walschleber-kultour.com/event.php</loc><lastmod>2026-01-23</lastmod></url>
<url><loc>https://walschleber-kultour.com/newsletter.html</loc><lastmod>2026-01-23</lastmod></url>
<url><loc>https://walschleber-kultour.com/impressum.html</loc><lastmod>2026-01-23</lastmod></url>
<url><loc>https://walschleber-kultour.com/datenschutz.html</loc><lastmod>2026-01-23</lastmod></url>
</urlset>
+18
View File
@@ -15,6 +15,24 @@
<meta property="og:image" content="https://walschleber-kultour.com/assets/og-default.jpg">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Walschleber KulTour",
"url": "https://walschleber-kultour.com/",
"logo": "https://walschleber-kultour.com/assets/logo.png",
"email": "walschleber.kultour@gmail.com",
"address": {
"@type": "PostalAddress",
"streetAddress": "Erfurter Straße 29b",
"postalCode": "99189",
"addressLocality": "Walschleben",
"addressCountry": "DE"
}
}
</script>
<link rel="icon" href="/assets/logo.png" sizes="32x32" type="image/png">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="/assets/styles.css">
+5 -1
View File
@@ -78,7 +78,7 @@ $jsonld = render_event_jsonld_graph($past);
</div>
<div class="row g-4">
<?php foreach ($past as $e): $mid = 'past-'.h($e['id']); ?>
<?php foreach ($past as $e): $mid = 'past-'.h($e['id']); $detailPath = event_path($e); ?>
<div class="col-md-6 col-lg-4">
<article class="poster-card position-relative h-100"
data-bs-toggle="modal" data-bs-target="#<?= $mid ?>"
@@ -114,6 +114,10 @@ $jsonld = render_event_jsonld_graph($past);
<?php endif; ?>
</div>
<div class="mt-3 d-grid gap-2 d-sm-flex justify-content-center">
<a class="btn btn-outline-secondary btn-sm" href="<?= h($detailPath) ?>" onclick="event.stopPropagation()">Details</a>
</div>
<a href="#<?= $mid ?>" class="stretched-link" data-bs-toggle="modal" data-bs-target="#<?= $mid ?>" aria-hidden="true" tabindex="-1"></a>
</div>
</article>