Ajout du schema JSON-LD BreadcrumbList sur les pages internes

Fil d'Ariane automatique basé sur le pathname : Accueil → Section → Sous-page. Adapté aux 3 langues (Accueil/Home/الرئيسية). Absent sur les pages d'accueil.
This commit is contained in:
Jalil Arfaoui 2026-02-21 15:17:12 +01:00
parent d44f190845
commit a12f0880bf

View file

@ -92,6 +92,37 @@ const articleJsonLd =
} }
: null; : null;
// BreadcrumbList JSON-LD (all pages except home)
const breadcrumbJsonLd = !isHomePage
? (() => {
const segments = pathname.split("/").filter(Boolean);
// Build cumulative paths: /en/code → [{name: "Home", url: /en}, {name: "Code", url: /en/code}]
const homeUrl = locale === "fr" ? "/" : `/${locale}`;
const homeName = locale === "ar" ? "الرئيسية" : locale === "en" ? "Home" : "Accueil";
const items = [{ name: homeName, url: new URL(homeUrl, siteUrl).href }];
// Skip locale prefix for building readable names
const startIdx = locale !== "fr" ? 1 : 0;
let cumulativePath = locale !== "fr" ? `/${locale}` : "";
for (let i = startIdx; i < segments.length; i++) {
cumulativePath += `/${segments[i]}`;
const name = decodeURIComponent(segments[i])
.replace(/-/g, " ")
.replace(/^\w/, (c) => c.toUpperCase());
items.push({ name, url: new URL(cumulativePath, siteUrl).href });
}
return {
"@context": "https://schema.org",
"@type": "BreadcrumbList",
itemListElement: items.map((item, i) => ({
"@type": "ListItem",
position: i + 1,
name: item.name,
item: item.url,
})),
};
})()
: null;
// WebSite JSON-LD (only on home pages) // WebSite JSON-LD (only on home pages)
const websiteJsonLd = isHomePage const websiteJsonLd = isHomePage
? { ? {
@ -150,6 +181,11 @@ const websiteJsonLd = isHomePage
<script type="application/ld+json" set:html={JSON.stringify(articleJsonLd)} /> <script type="application/ld+json" set:html={JSON.stringify(articleJsonLd)} />
)} )}
<!-- JSON-LD BreadcrumbList (inner pages only) -->
{breadcrumbJsonLd && (
<script type="application/ld+json" set:html={JSON.stringify(breadcrumbJsonLd)} />
)}
<!-- JSON-LD WebSite (home pages only) --> <!-- JSON-LD WebSite (home pages only) -->
{websiteJsonLd && ( {websiteJsonLd && (
<script type="application/ld+json" set:html={JSON.stringify(websiteJsonLd)} /> <script type="application/ld+json" set:html={JSON.stringify(websiteJsonLd)} />