diff --git a/prerender.cjs b/prerender.cjs
index 8a11fec..eb1e7ed 100644
--- a/prerender.cjs
+++ b/prerender.cjs
@@ -313,7 +313,8 @@ const renderApp = async (categoryData, socket) => {
? "index.html"
: "index.prerender.html";
const homeMetaTags = generateHomepageMetaTags(shopConfig.baseUrl, shopConfig);
- const homeJsonLd = generateHomepageJsonLd(shopConfig.baseUrl, shopConfig);
+ const homepageCategories = categoryData ? collectAllCategories(categoryData) : [];
+ const homeJsonLd = generateHomepageJsonLd(shopConfig.baseUrl, shopConfig, homepageCategories);
const combinedHomeMeta = homeMetaTags + "\n" + homeJsonLd;
const homeSuccess = render(
homeComponent,
@@ -385,8 +386,8 @@ const renderApp = async (categoryData, socket) => {
// Special handling for Sitemap page to include category data
if (page.filename === "sitemap" && categoryData) {
- const allCategories = collectAllCategories(categoryData);
- metaTags = generateSitemapJsonLd(allCategories, shopConfig.baseUrl, shopConfig);
+ const sitemapCategories = collectAllCategories(categoryData);
+ metaTags = generateSitemapJsonLd(sitemapCategories, shopConfig.baseUrl, shopConfig);
}
// Special handling for Konfigurator page to include SEO tags
diff --git a/prerender/seo.cjs b/prerender/seo.cjs
index 27aa29b..33e2225 100644
--- a/prerender/seo.cjs
+++ b/prerender/seo.cjs
@@ -196,9 +196,9 @@ const generateHomepageMetaTags = (baseUrl, config) => {
`;
};
-const generateHomepageJsonLd = (baseUrl, config) => {
+const generateHomepageJsonLd = (baseUrl, config, categories = []) => {
- const jsonLd = {
+ const websiteJsonLd = {
"@context": "https://schema.org/",
"@type": "WebSite",
name: config.brandName,
@@ -232,9 +232,27 @@ const generateHomepageJsonLd = (baseUrl, config) => {
],
};
- return ``;
+ // Generate BreadcrumbList for all categories
+ const breadcrumbJsonLd = {
+ "@context": "https://schema.org",
+ "@type": "BreadcrumbList",
+ "itemListElement": categories
+ .filter(category => category.seoName) // Only include categories with seoName
+ .map((category, index) => ({
+ "@type": "ListItem",
+ "position": index + 1,
+ "name": category.name,
+ "item": `${baseUrl}/Kategorie/${category.seoName}`
+ }))
+ };
+
+ // Return both JSON-LD scripts
+ const websiteScript = ``;
+ const breadcrumbScript = categories.length > 0
+ ? ``
+ : '';
+
+ return websiteScript + (breadcrumbScript ? '\n' + breadcrumbScript : '');
};
const generateSitemapJsonLd = (allCategories = [], baseUrl, config) => {