refactor: Update JSON-LD generation in generateProductJsonLd function to separate product and breadcrumb scripts for improved SEO structure

This commit is contained in:
sebseb7
2026-03-28 16:30:39 +01:00
parent 52c62541b0
commit 2ced182570

View File

@@ -86,7 +86,7 @@ const generateProductJsonLd = (product, baseUrl, config, categoryInfo = null) =>
const priceValidDate = new Date(); const priceValidDate = new Date();
priceValidDate.setMonth(priceValidDate.getMonth() + 3); priceValidDate.setMonth(priceValidDate.getMonth() + 3);
const jsonLd = { const productJsonLd = {
"@context": "https://schema.org/", "@context": "https://schema.org/",
"@type": "Product", "@type": "Product",
name: product.name, name: product.name,
@@ -150,9 +150,14 @@ const generateProductJsonLd = (product, baseUrl, config, categoryInfo = null) =>
}, },
}; };
// Add breadcrumb if category information is available const productScript = `<script type="application/ld+json">${JSON.stringify(
productJsonLd
)}</script>`;
// BreadcrumbList is not a valid property on Product; emit as its own JSON-LD block (WebPage path context).
if (categoryInfo && categoryInfo.name && categoryInfo.seoName) { if (categoryInfo && categoryInfo.name && categoryInfo.seoName) {
jsonLd.breadcrumb = { const breadcrumbJsonLd = {
"@context": "https://schema.org/",
"@type": "BreadcrumbList", "@type": "BreadcrumbList",
itemListElement: [ itemListElement: [
{ {
@@ -175,11 +180,13 @@ const generateProductJsonLd = (product, baseUrl, config, categoryInfo = null) =>
}, },
], ],
}; };
const breadcrumbScript = `<script type="application/ld+json">${JSON.stringify(
breadcrumbJsonLd
)}</script>`;
return `${productScript}\n${breadcrumbScript}`;
} }
return `<script type="application/ld+json">${JSON.stringify( return productScript;
jsonLd
)}</script>`;
}; };
module.exports = { module.exports = {