fix: Produkt ohne Geschmacksnoten bekam "Waldhonig — . 500 g" als Beschreibung
Docker Image bauen und veroeffentlichen / build-and-push (push) Successful in 3m5s
Docker Image bauen und veroeffentlichen / build-and-push (push) Successful in 3m5s
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) <[email protected]>
This commit is contained in:
1 parent
7dd42e35bc
commit
c5e4978fad
1 file changed
+10
-1
@@ -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]}
|
||||
</p>
|
||||
<h1 className="text-4xl text-forest">{product.name}</h1>
|
||||
{/* Ohne gepflegte Noten sonst ein leerer Absatz, der nur Abstand
|
||||
zwischen Ueberschrift und Bewertung erzeugt. */}
|
||||
{product.tasteTags.length > 0 ? (
|
||||
<p className="mt-2 text-ink/70">{product.tasteTags.join(" · ")}</p>
|
||||
) : null}
|
||||
{reviewSummary.count > 0 ? (
|
||||
<Link href="#bewertungen" className="mt-4 flex items-center gap-2 text-sm">
|
||||
<StarRating value={reviewSummary.average ?? 0} size={16} />
|
||||
|
||||
Reference in new issue
Block a user