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 ? (
+