diff --git a/next.config.ts b/next.config.ts index 9f59cd4..43af1ba 100644 --- a/next.config.ts +++ b/next.config.ts @@ -42,6 +42,10 @@ const nextConfig: NextConfig = { turbopack: { root: path.resolve(dirname), }, + experimental: { + // @ts-expect-error - Undocumented Next.js feature required for SEO streaming + htmlLimitedBots: /Googlebot|bingbot|yandex|baiduspider/i, + }, } export default withPayload(nextConfig, { devBundleServerPackages: false }) diff --git a/src/app/(frontend)/[locale]/[[...slug]]/page.tsx b/src/app/(frontend)/[locale]/[[...slug]]/page.tsx index d05bcf9..d4d2728 100644 --- a/src/app/(frontend)/[locale]/[[...slug]]/page.tsx +++ b/src/app/(frontend)/[locale]/[[...slug]]/page.tsx @@ -20,6 +20,37 @@ const pageMetadata = createPageMetadata({ baseUrl: process.env.NEXT_PUBLIC_SERVER_URL || 'https://www.jkedzierski.de' }) +export const revalidate = 3600 + +export async function generateStaticParams() { + const payload = await getPayload({ config: configPromise }) + const pages = await payload.find({ collection: 'pages', limit: 1000 }) + const params: { locale: string; slug: string[] }[] = [] + + for (const page of pages.docs) { + if (page.slug && typeof page.slug === 'object') { + for (const [locale, slug] of Object.entries(page.slug)) { + if (slug && typeof slug === 'string') { + // Assuming index page is just the locale root without slug + params.push({ + locale, + slug: slug === 'home' ? [] : slug.split('/') + }) + } + } + } + } + + // fallback to empty slugs for languages if none matched + if (params.length === 0) { + params.push({ locale: 'pl', slug: [] }) + params.push({ locale: 'en', slug: [] }) + params.push({ locale: 'de', slug: [] }) + } + + return params +} + export async function generateMetadata( props: { params: Promise<{ locale: string; slug?: string[] }> } ): Promise { diff --git a/src/app/(frontend)/[locale]/layout.tsx b/src/app/(frontend)/[locale]/layout.tsx index 49ef114..831a359 100644 --- a/src/app/(frontend)/[locale]/layout.tsx +++ b/src/app/(frontend)/[locale]/layout.tsx @@ -68,13 +68,11 @@ export default async function RootLayout(props: { return ( - +