From c5e4978fadd66ee8eebef294684e3ab831ec35a0 Mon Sep 17 00:00:00 2001 From: Nick Szaunig Date: Sun, 20 Sep 2026 03:31:35 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20Produkt=20ohne=20Geschmacksnoten=20bekam?= =?UTF-8?q?=20"Waldhonig=20=E2=80=94=20.=20500=20g"=20als=20Beschreibung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Die Beschreibung der Produktseite setzt Name, Geschmacksnoten und Fuellmenge zusammen und rechnet dabei fest damit, dass Noten gepflegt sind. Sind sie es nicht — ein freiwilliges Admin-Feld —, blieb zwischen Gedankenstrich und Fuellmenge ein einzelner Punkt ohne Inhalt stehen. Auf wabenhain.com an "Waldhonig" beobachtet: description und og:description lauteten "Waldhonig — . 500 g aus eigener Imkerei in Altenmünster." Das ist genau der Text, den Google als Snippet anzeigt und den jede geteilte Vorschau uebernimmt. Derselbe Fall liess unter der Ueberschrift einen leeren Absatz stehen, der nur Abstand zwischen Produktnamen und Bewertung erzeugte. Beides faellt jetzt weg, wenn keine Noten gepflegt sind; mit Noten bleibt die Ausgabe unveraendert. tsc: 0 Fehler. vitest: 359/359 gruen. eslint: 0 Warnungen. Co-Authored-By: Claude Opus 5 (1M context) --- src/app/honig/[slug]/page.tsx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/app/honig/[slug]/page.tsx b/src/app/honig/[slug]/page.tsx index abfb998..3c7433d 100644 --- a/src/app/honig/[slug]/page.tsx +++ b/src/app/honig/[slug]/page.tsx @@ -39,7 +39,12 @@ export async function generateMetadata( const product = await getProductBySlug(slug); if (!product) return {}; - const description = `${product.name} — ${product.tasteTags.join(", ")}. ${product.weightGrams} g aus eigener Imkerei in Altenmünster.`; + // Geschmacksnoten sind ein freiwilliges Admin-Feld. Ohne die Pruefung + // stand bei einem Produkt ohne Eintraege "Waldhonig — . 500 g aus eigener + // Imkerei" in der Google-Beschreibung und in jeder geteilten Vorschau — + // Gedankenstrich und einzelner Punkt ohne Inhalt dazwischen. + const tasteNote = product.tasteTags.length > 0 ? `${product.tasteTags.join(", ")}. ` : ""; + const description = `${product.name} — ${tasteNote}${product.weightGrams} g aus eigener Imkerei in Altenmünster.`; return { title: product.name, @@ -242,7 +247,11 @@ export default async function ProductDetailPage( {company.name} · {t.common.categories[product.category]}

{product.name}

-

{product.tasteTags.join(" · ")}

+ {/* Ohne gepflegte Noten sonst ein leerer Absatz, der nur Abstand + zwischen Ueberschrift und Bewertung erzeugt. */} + {product.tasteTags.length > 0 ? ( +

{product.tasteTags.join(" · ")}

+ ) : null} {reviewSummary.count > 0 ? (