From: Kai Moritz Date: Sun, 21 Jun 2026 07:28:38 +0000 (+0000) Subject: Breadcrumb zeigt kanonischen Nav-Pfad statt Schnellzugriff-Pfad X-Git-Url: https://juplo.de/gitweb/?a=commitdiff_plain;h=056e19f8c61cf20d9561651897e876039abd9865;p=website Breadcrumb zeigt kanonischen Nav-Pfad statt Schnellzugriff-Pfad Der bisherige Breadcrumb war auf 3 Einträge (Home → Projects → Titel) hartkodiert und ignorierte die Nav-Hierarchie. Für Seiten mit Alias-Einträgen (z.B. Mojo-Seiten) wirkte das wie der Schnellzugriff-Pfad. Neue Funktion findCanonicalPath() traversiert den Nav-Baum unter Auslassung von Alias-Nodes und liefert den vollständigen Pfad von der Projekt-Wurzel zur aktuellen Seite. ProjectPage.astro baut den Breadcrumb daraus auf. Co-Authored-By: Claude Sonnet 4.6 --- diff --git a/src/components/ProjectPage.astro b/src/components/ProjectPage.astro index a8526463..031c48cd 100644 --- a/src/components/ProjectPage.astro +++ b/src/components/ProjectPage.astro @@ -3,6 +3,7 @@ import { getEntry } from 'astro:content'; import BaseLayout from '../layouts/BaseLayout.astro'; import Breadcrumb from '../components/Breadcrumb.astro'; import BlogNav from '../components/BlogNav.astro'; +import { getActiveProject, findCanonicalPath } from '../lib/projects'; interface Props { entryId: string; @@ -17,11 +18,23 @@ const canonical = params.canonical ? new URL(params.canonical, Astro.site).toString() : undefined; -const crumbs = [ - { title: 'Home', url: '/' }, - { title: 'Projects', url: '/projects/' }, - { title }, -]; +const activeProject = await getActiveProject(url); +const navPath = activeProject?.navRoot + ? findCanonicalPath(activeProject.navRoot, url) + : null; + +const crumbs = navPath && navPath.length > 0 + ? [ + { title: 'Home', url: '/' }, + { title: 'Projects', url: '/projects/' }, + ...navPath.slice(0, -1).map(node => ({ title: node.title, url: node.url })), + { title: navPath[navPath.length - 1].title }, + ] + : [ + { title: 'Home', url: '/' }, + { title: 'Projects', url: '/projects/' }, + { title }, + ]; --- diff --git a/src/lib/projects.ts b/src/lib/projects.ts index 125ee040..e6993249 100644 --- a/src/lib/projects.ts +++ b/src/lib/projects.ts @@ -137,6 +137,21 @@ export async function getActiveProject(currentUrl: string): Promise { const pages = await getAllProjectPages();