Skládat navigaci z kolekce Pages
Menu bylo napsané natvrdo a odkazovalo na /kontakt bez ohledu na to, jestli stránka s tím slugem existuje — odtud 404. Stránky založené v administraci se naopak neobjevily nikde. Hlavička teď vypisuje stránky z kolekce, řazené podle názvu. Layout kvůli tomu musí být force-dynamic, jinak by se při buildu předgenerovala stránka 404, která tenhle layout používá taky, a build by sáhl do databáze. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
import React from 'react'
|
||||
import Link from 'next/link'
|
||||
import { getPayload } from 'payload'
|
||||
|
||||
import config from '@/payload.config'
|
||||
import './styles.css'
|
||||
|
||||
export const metadata = {
|
||||
@@ -7,8 +10,22 @@ export const metadata = {
|
||||
title: 'Reiner — zbraně a střelivo',
|
||||
}
|
||||
|
||||
// Menu se skládá z obsahu, takže se nesmí předgenerovat při buildu.
|
||||
// Platí i pro stránku 404, která tenhle layout používá také.
|
||||
export const dynamic = 'force-dynamic'
|
||||
|
||||
export default async function RootLayout(props: { children: React.ReactNode }) {
|
||||
const { children } = props
|
||||
const payload = await getPayload({ config: await config })
|
||||
|
||||
// Do menu se propíše každá stránka založená v administraci — natvrdo psaný
|
||||
// odkaz by mířil na něco, co majitel ještě nevytvořil, nebo pojmenoval jinak.
|
||||
const { docs: stranky } = await payload.find({
|
||||
collection: 'pages',
|
||||
sort: 'nazev',
|
||||
depth: 0,
|
||||
limit: 20,
|
||||
})
|
||||
|
||||
return (
|
||||
<html lang="cs">
|
||||
@@ -19,7 +36,11 @@ export default async function RootLayout(props: { children: React.ReactNode }) {
|
||||
</Link>
|
||||
<nav>
|
||||
<Link href="/">Nabídka</Link>
|
||||
<Link href="/kontakt">Kontakt</Link>
|
||||
{stranky.map((stranka) => (
|
||||
<Link key={stranka.id} href={`/${stranka.slug}`}>
|
||||
{stranka.nazev}
|
||||
</Link>
|
||||
))}
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user