Drop opening hours, say we are reachable by email; name Hannover

The contact block and the card in section 02 no longer list opening
hours; both now say we can be reached by email at any time. Hannover
appears in the hero line, the page title, the meta description, the
contact text and a ProfessionalService JSON-LD block for search engines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Lara 2026-10-06 15:50:40 +02:00
parent 58fc72b283
commit 7cb3cf4b69
4 changed files with 32 additions and 17 deletions

View file

@ -241,7 +241,7 @@ module.exports = [
{ key: 'title', label: 'Überschrift', type: 'text' },
{ key: 'lead', label: 'Einleitungstext', type: 'richtext' },
{ key: 'phone', label: 'Telefonnummer (leer = Platzhalter)', type: 'text' },
{ key: 'hours', label: 'Erreichbarkeit (leer = Platzhalter)', type: 'text' },
{ key: 'hours', label: 'Telefonische Erreichbarkeit unter der Nummer (leer = ausgeblendet)', type: 'text' },
{ key: 'email', label: 'E-Mail-Adresse', type: 'email' },
{ key: 'howWeWork', label: '"Wie wir arbeiten" (leer = Platzhalter)', type: 'textarea' },
],

View file

@ -1,6 +1,6 @@
{
"meta": {
"description": "Larpaso entwickelt individuelle Websites für Betriebe und Unternehmen: sorgfältig gestaltet, technisch solide, zu planbaren Kosten."
"description": "Larpaso baut Websites für Betriebe in Hannover: Angebot, Preise, Zeiten und Anfahrt auf einen Blick, gut bedienbar auf dem Handy, zum Festpreis."
},
"nav": {
"logo": "/logo.svg",
@ -30,7 +30,7 @@
"ctaLabel": "Projekt besprechen"
},
"hero": {
"eyebrow": "Webdesign für Betriebe vor Ort",
"eyebrow": "Webdesign für Betriebe in Hannover",
"titleBefore": "Websites, auf denen Ihre Kunden ",
"titleEmphasis": "sofort",
"titleAfter": " finden, was sie suchen.",
@ -51,19 +51,19 @@
"customImage": "",
"title": "Was Kunden suchen, steht auf der Seite.",
"lead": "Wer abends wissen will, ob Sie morgen offen haben, schaut auf dem Handy nach. Findet er die Zeiten sofort, ruft er nicht an. Findet er sie nicht, ruft er woanders an.",
"hoursTitle": "Öffnungszeiten",
"hoursTitle": "So erreichen Sie uns",
"hoursRows": [
{
"day": "Montag – Donnerstag",
"time": "9:00–18:00"
"day": "Per E-Mail",
"time": "jederzeit"
},
{
"day": "Freitag",
"time": "9:00–14:00"
"day": "Antwort",
"time": "meist am selben Tag"
},
{
"day": "Samstag",
"time": "nach Absprache"
"day": "Sitz",
"time": "Hannover"
}
]
}
@ -293,9 +293,9 @@
"kontakt": {
"eyebrow": "08 · Kontakt",
"title": "Lassen Sie uns sprechen.",
"lead": "Erzählen Sie uns kurz von Ihrem Projekt, wir melden uns zeitnah bei Ihnen zurück. Ein Erstgespräch ist unverbindlich und kostet Sie nichts.",
"lead": "Erzählen Sie uns kurz von Ihrem Projekt, wir melden uns zeitnah bei Ihnen zurück. Wir sitzen in Hannover. Ein Erstgespräch ist unverbindlich und kostet Sie nichts.",
"phone": "",
"hours": "Mo–Do 9–18 Uhr · Fr 9–14 Uhr · Sa nach Absprache",
"hours": "",
"email": "kontakt@larpaso.de",
"howWeWork": ""
},

View file

@ -12,6 +12,20 @@ interface Props {
const { title, description = site.meta.description } = Astro.props;
const canonical = new URL(Astro.url.pathname, Astro.site).href;
const ogImage = new URL('/og-larpaso.jpg', Astro.site).href;
const orgData = {
'@context': 'https://schema.org',
'@type': 'ProfessionalService',
name: 'Larpaso',
description: site.meta.description,
url: Astro.site?.href,
logo: new URL('/icon-512.png', Astro.site).href,
image: ogImage,
email: site.kontakt.email,
...(site.kontakt.phone ? { telephone: site.kontakt.phone } : {}),
address: { '@type': 'PostalAddress', addressLocality: 'Hannover', addressRegion: 'Niedersachsen', addressCountry: 'DE' },
areaServed: { '@type': 'City', name: 'Hannover' },
priceRange: 'ab 500 €',
};
---
<!doctype html>
@ -44,6 +58,9 @@ const ogImage = new URL('/og-larpaso.jpg', Astro.site).href;
<style set:html={fontFacesCss(theme)} />
<style set:html={themeCss(theme)} />
<!-- Für Suchmaschinen: wer, was, wo (Hannover). Adresse bewusst ohne Straße. -->
<script type="application/ld+json" set:html={JSON.stringify(orgData)} />
</head>
<body>
<a href="#main-content" class="skip-link">Zum Inhalt springen</a>

View file

@ -18,7 +18,7 @@ const findItem = (src: string) =>
mappe.items.find((i) => src && (i.image === src || i.mobileImage === src));
---
<Layout title="Startseite">
<Layout title="Webdesign in Hannover">
<!-- Hero -->
<section class="section hero">
<div class="container hero-grid">
@ -276,15 +276,13 @@ const findItem = (src: string) =>
<p class={kontakt.phone ? 'contact-phone' : 'placeholder contact-phone'}>
{kontakt.phone || '[Telefonnummer eintragen]'}
</p>
<p class={kontakt.hours ? 'contact-hours' : 'placeholder contact-hours'}>
{kontakt.hours || '[Erreichbarkeit eintragen, z. B. Mo–Fr 9–18 Uhr]'}
</p>
{kontakt.hours && <p class="contact-hours">{kontakt.hours}</p>}
</div>
<div class="contact-detail">
<p class="contact-label">Oder direkt schreiben</p>
<p class="contact-email"><a href={`mailto:${kontakt.email}`}>{kontakt.email}</a></p>
<p class="contact-hint">Antwort in der Regel am selben Tag.</p>
<p class="contact-hint">Jederzeit per E-Mail erreichbar, Antwort in der Regel am selben Tag.</p>
</div>
<div class="contact-detail">