Navigation & Structure
En bref
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.
Comment ça fonctionne
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.
Capacités clés
- 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
En pratique
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.
Fonctionnalités de ce sous-système
6| ID | Status | Fonctionnalités |
|---|---|---|
| F18.05.01 | Livré | Menu builder (custom navigation) — PL-F1805 ✅ PL-F1805 |
| F18.05.02 | Livré | Auto-generated pages (rankings, calendar, results — pulled from API) — PL-F1805 ✅ PL-F1805 |
| F18.05.03 | Livré | Breadcrumb navigation — PL-F1805 ✅ PL-F1805 |
| F18.05.04 | Livré | Search within site — PL-F1805 ✅ PL-F1805 |
| F18.05.05 | Livré | Sitemap generation (XML for search engines) — PL-F1805 ✅ PL-F1805 |
| F18.05.06 | Livré | Footer customization (links, contact info, social media) — PL-F1805 ✅ PL-F1805 |