Navigation & Structure
I korthet
Navigation and structural primitives that hold a CMS site together — a tree-based menu builder with localized labels, auto-generated pages for rankings, calendar, results and club directory, JSON-LD breadcrumbs, gating-aware full-text site search, an XML sitemap for crawlers with hreflang alternates, and a fully customizable footer with link columns, contact info and social handles separated from layout presets.
Så fungerar det
Each CmsSite owns a Navigation document containing one or more menus (typically primary, footer and utility). The menu builder is a tree editor: editors add items, set labels per locale, link to internal CmsPages, external URLs or auto-generated pages, and reorder via drag. Auto-generated pages are virtual routes that don't require a CmsPage record — `/rankings`, `/calendar`, `/results`, `/clubs` are rendered by templates that pull data straight from the API and respect the site's tenant scope.
Editors enable or disable each one with a checkbox in site settings; when enabled, the route becomes available to the menu builder and the renderer. Breadcrumbs are derived from the URL hierarchy and CmsPage parent_id, rendered with JSON-LD BreadcrumbList for SEO. Site search indexes every published page, article and dynamic-page snapshot via Algolia (or a self-hosted Meilisearch fallback) and respects page access control — a public visitor never sees results from members-only pages, and a logged-in member sees only pages their groups grant access to.
The search index is refreshed incrementally on every publish event. The XML sitemap is generated on demand at `/sitemap.xml`, includes lastmod, changefreq and priority per page plus xhtml:link hreflang alternates for translated pages, and skips drafts and noindex pages. The footer is a structured editor: editors add columns of links, contact info, social media handles and legal links; a separate set of footer presets (multi-column, minimal, social-focused) controls layout, while content stays editable.
Centrala funktioner
- Tree-based menu builder with localized labels and tenant-scoped link picker
- Auto-generated pages for rankings, calendar, results and club directory
- Breadcrumb navigation with JSON-LD BreadcrumbList markup
- Site-scoped full-text search respecting page access control
- Auto-generated sitemap.xml with hreflang alternates
- Structured footer editor with link columns, contact info and social links
- Footer layout presets independent of content
I praktiken
Léa, secretary of CC Marseille, restructures her club site for the new season. She opens the menu builder, drags 'Calendrier' to second position, adds a new 'École de pétanque' submenu with three child links to membership pages, and translates each label to French and English. She enables the auto-generated /clubs page so visitors can find affiliated venues, then ticks /results so the public can browse last weekend's competitions without leaving the site.
She updates the footer with the new postal address, adds Instagram and Facebook handles, and removes a dead sponsor link. The new sitemap.xml is regenerated on her next publish, and search engines pick up the structural changes within 24 hours.
Features i detta subsystem
6| ID | Status | Funktioner |
|---|---|---|
| F18.05.01 | Levererad | Menu builder (custom navigation) — PL-F1805 ✅ PL-F1805 |
| F18.05.02 | Levererad | Auto-generated pages (rankings, calendar, results — pulled from API) — PL-F1805 ✅ PL-F1805 |
| F18.05.03 | Levererad | Breadcrumb navigation — PL-F1805 ✅ PL-F1805 |
| F18.05.04 | Levererad | Search within site — PL-F1805 ✅ PL-F1805 |
| F18.05.05 | Levererad | Sitemap generation (XML for search engines) — PL-F1805 ✅ PL-F1805 |
| F18.05.06 | Levererad | Footer customization (links, contact info, social media) — PL-F1805 ✅ PL-F1805 |