--- import GlossaryLayout from "../../layouts/GlossaryLayout.astro"; import GlossaryAside from "../../components/GlossaryAside.astro"; import { getCollection, render } from "astro:content"; export async function getStaticPaths() { const entries = await getCollection("glossaire"); const paths = []; const seen = new Set(); for (const entry of entries) { const canonicalSlug = String(entry.id || "") .trim() .replace(/^\/+|\/+$/g, "") .replace(/\.(md|mdx)$/i, "") .toLowerCase(); if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(canonicalSlug)) continue; const addPath = (rawSlug) => { const requestedSlug = String(rawSlug || "") .trim() .replace(/^\/+|\/+$/g, "") .replace(/\.(md|mdx)$/i, "") .toLowerCase(); if (!requestedSlug) return; if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(requestedSlug)) return; if (seen.has(requestedSlug)) return; seen.add(requestedSlug); paths.push({ params: { slug: requestedSlug }, props: { entry, requestedSlug, canonicalSlug, }, }); }; addPath(canonicalSlug); for (const alias of entry.data.urlAliases ?? []) { addPath(alias); } } return paths; } const { entry, requestedSlug, canonicalSlug } = Astro.props; const allEntries = await getCollection("glossaire"); const { Content } = await render(entry); const isAliasRoute = requestedSlug !== canonicalSlug; const canonicalHref = `/glossaire/${canonicalSlug}/`; --- {isAliasRoute && ( Cette entrée a été renommée. L’intitulé canonique est : {entry.data.term}. )} {entry.data.term} {entry.data.definitionShort} {(entry.data.mobilizedAuthors?.length > 0 || entry.data.comparisonTraditions) && ( {entry.data.mobilizedAuthors?.length > 0 && ( Auteurs mobilisés : {entry.data.mobilizedAuthors.join(" / ")} )} {entry.data.comparisonTraditions && ( Traditions de comparaison : {entry.data.comparisonTraditions.join(" / ")} )} )}
Cette entrée a été renommée. L’intitulé canonique est : {entry.data.term}.
{entry.data.definitionShort}
Auteurs mobilisés : {entry.data.mobilizedAuthors.join(" / ")}
Traditions de comparaison : {entry.data.comparisonTraditions.join(" / ")}