]> juplo.de Git - website/commitdiff
CLAUDE.md: BlogNav off-Logik und About-Navigation-Status aktualisiert
authorKai Moritz <kai.milan.moritz@googlemail.com>
Sun, 14 Jun 2026 08:58:04 +0000 (08:58 +0000)
committerKai Moritz <kai.milan.moritz@googlemail.com>
Sun, 14 Jun 2026 08:58:04 +0000 (08:58 +0000)
off-Klassen-Abschnitt: Herleitung jetzt korrekt aus Hugo-Template-Quellen
(frontend-Branch) dokumentiert statt aus HTML-Output-Analyse.
Standalone-Seiten-Abschnitt: Status von "offener Punkt" auf
"implementiert via BlogNav" aktualisiert; nur Projects-Baum fehlt noch.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
CLAUDE.md

index 9c6797fa14e3b61bc735d91115e19d9d054a0cdf..445af9512687e2d753bd47c6e26d4edb714134ff 100644 (file)
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -170,11 +170,21 @@ Quelle: https://docs.astro.build/en/guides/rss/
 
 **Was:** `BlogNav.astro` berechnet den Navigationszustand vollständig in TypeScript-Variablen (`onBlog`, `onArchive`, `onCategoriesIndex`, `onCategoryTerm`, etc.) und rendert das HTML anhand dieser Flags.
 
-**Warum:** Hugo's `menu/tree.html` ist ein rekursives Partial, das den Baum traversiert und dabei Hugo-interne Konzepte wie `.IsDescendant`, `.Ancestors`, `.Eq` nutzt. Diese existieren in Astro nicht. Statt einer allgemeinen Lösung wurde für den Blog-Ast (der einzige aktuell implementierte Ast) eine explizite State-Machine gewählt, die die konkreten Seitentypen des Blogs kennt und die entsprechenden CSS-Klassen (`off`, `sub`, `selected`, `active`) direkt ableitet.
+**Warum:** Hugo's `menu/tree.html` ist ein rekursives Partial, das den Baum traversiert und dabei Hugo-interne Konzepte wie `.IsDescendant`, `.Ancestors`, `.Eq` nutzt. Diese existieren in Astro nicht. Statt einer allgemeinen Lösung wurde eine explizite State-Machine gewählt, die die konkreten Seitentypen kennt und die CSS-Klassen (`off`, `sub`, `selected`, `active`) direkt ableitet.
 
-**Entscheidungsgrundlage:** Die `off`-Klassen wurden durch Analyse des Hugo-HTML-Outputs für alle relevanten Seitentypen ermittelt (Homepage, `/blog/`, Archiv-Seiten, Jahres-Seiten, Blog-Posts, Categories/Tags-Index, Categories/Tags-Term).
+**Wichtige Regel:** `#submenu li.s.off { display: none }` (Classic-Layout). Ein `ul.s` ohne `active` blendet sich nicht selbst aus — nur `li.s.nav-leaf` und `li.s.off` sind hidden.
 
-**Wichtige Regel:** Ein `li.s.off`-Element ist via CSS (`#submenu li.s.off { display: none }`) ausgeblendet. Ein `ul.s` (ohne `active`) blendet sich selbst nicht aus — nur `li.s.nav-leaf` und `li.s.off` sind hidden. Diese CSS-Regel war entscheidend für die korrekte Implementierung der Navigation.
+**`off`-Klassen-Logik** (aus Hugo-Template-Quellen im `frontend`-Branch hergeleitet):
+
+Hugo verwendet zwei verschiedene Menü-Templates:
+- `layouts/_partials/menu/blog.html` — für Blog-Seiten: Blog immer sichtbar, alle anderen Sections immer `off`
+- `layouts/_partials/menu/default.html` + `tree.html` — für alle anderen Seiten: Section-Index-Seiten (`IsNode=true`) blenden alle anderen Sections aus; auf der Homepage und regulären Root-Seiten (Impressum, Datenschutz) sind alle Sections sichtbar (Kind- bzw. Geschwister-Logik in `tree.html`)
+
+Daraus ergibt sich für `BlogNav.astro`:
+- `blogSectionOff = onAbout` — Blog im Submenu hidden nur auf `/about.html` (Section-Index)
+- `aboutOff = blogSelected` — About im Submenu hidden nur auf Blog-Seiten
+
+Wenn Projects implementiert wird: `blogSectionOff |= onProjects`, `aboutOff |= onProjects`.
 
 ---
 
@@ -210,13 +220,11 @@ Quelle: https://docs.astro.build/en/guides/rss/
 
 ---
 
-#### Standalone-Seiten ohne Navigation (Offener Punkt)
-
-**Was:** Die Seiten `about.html`, `impressum.html` und `datenschutz.html` haben keinen `menu`-Slot befüllt und zeigen daher keine Seitennavigation.
+#### Standalone-Seiten: Navigation über BlogNav
 
-**Warum:** Hugo zeigt auf Standalone-Seiten eine vollständige Site-Navigation (Blog-Baum + Projects-Baum + About-Baum). Die Implementierung dafür würde eine `SiteNav`-Komponente erfordern, die alle Sektionen kennt — inklusive der Projects-Seiten mit deren `current`-Flag-Logik. Das ist deutlich aufwendiger als `BlogNav` und wurde für die Migration zurückgestellt.
+**Was:** Die Seiten `about.html`, `impressum.html` und `datenschutz.html` nutzen `BlogNav.astro` im `menu`-Slot. Der About-Eintrag im Submenu zeigt sich korrekt als ausgewählt auf `/about.html` und als sichtbar (ohne `off`) auf Impressum/Datenschutz.
 
-**Zukünftige Aufgabe:** Eine `SiteNav.astro`-Komponente, die alle Hauptsektionen rendert und die `menu/tree.html`-Logik für Projects (only show `current: true` pages unless on path) repliziert.
+**Offener Punkt — Projects-Baum:** Hugo zeigt auf allen Seiten auch den Projects-Baum im Submenu (mit spezieller `current`-Flag-Logik für Projektversionen, aus `menu/tree.html`). Dieser fehlt noch. Sobald Projects implementiert wird, muss `BlogNav.astro` um den Projects-Ast erweitert werden (oder die Komponente wird in `SiteNav.astro` umbenannt).
 
 ---