Product JSON-LD: add sku + gallery images, single-source the meta description
sku was tracked in Payload but never exposed to the frontend at all — added to the Product type and wired into buildProductSchema (a real Schema.org property Google's rich-result validator checks for). image is now an array (main + gallery) when a product has gallery photos, instead of always just the one main image. /der-eine's page metadata description was a separately hardcoded string that had drifted from Products.description (the one JSON-LD/ cart/checkout actually use) — now reads from the live product via generateMetadata, same pattern /tasse-die-pause already uses. Updated Payload's own description field to the more product-descriptive text that used to live only in that hardcoded string.
This commit is contained in:
@@ -182,6 +182,10 @@ export type Product = {
|
||||
numericId: number;
|
||||
name: string;
|
||||
description: string;
|
||||
// Not shown anywhere in the UI today — only consumed by
|
||||
// buildProductSchema (JSON-LD's Product.sku), a real Schema.org property
|
||||
// Google's rich-result validator looks for.
|
||||
sku: string | null;
|
||||
price: number;
|
||||
compareAtPrice: number | null;
|
||||
image: string;
|
||||
@@ -264,6 +268,7 @@ type PayloadProduct = {
|
||||
name: string;
|
||||
slug: string;
|
||||
description: string | null;
|
||||
sku: string | null;
|
||||
price: number;
|
||||
compareAtPrice: number | null;
|
||||
image: { url: string } | number | null;
|
||||
@@ -330,6 +335,7 @@ export function mapPayloadProduct(product: PayloadProduct): Product {
|
||||
numericId: product.id,
|
||||
name: product.name,
|
||||
description: product.description ?? "",
|
||||
sku: product.sku || null,
|
||||
price: product.price,
|
||||
compareAtPrice: product.compareAtPrice ?? null,
|
||||
image: typeof product.image === "object" && product.image ? product.image.url : "",
|
||||
|
||||
Reference in New Issue
Block a user