1.7 KiB
1.7 KiB
pages
System pages: centralne przypisanie ról (homepage / privacyPolicy / cookiePolicy) do dokumentów z klienckiej kolekcji Pages, w SiteSettings. Front rozwiązuje rolę na ścieżkę locale-aware.
Config (payload.config.ts)
ipalKit({
pages: {
slug: 'pages', // slug Twojej kolekcji Pages
// roles: ['homepage', 'privacyPolicy', 'cookiePolicy'], // domyślnie wszystkie
},
})
Dodaje tab System Pages w SiteSettings z polami relationship do Twojej kolekcji Pages. Edytor wybiera, który dokument pełni którą rolę. Plugin nie zna Twojej kolekcji — slug podajesz w opcji.
Front — rozwiązanie ścieżki roli
import { getSystemPagePath } from 'ipal-kit'
// SiteSettings z locale:'all' + depth:1 (żeby relationship był obiektem, nie ID)
const settings = await payload.findGlobal({
slug: 'site-settings', locale: 'all', depth: 1,
})
// homepage w locale 'pl'
getSystemPagePath({ page: settings.homepage, locale: 'pl', config })
// → '/pl' (home slug zwija się do roota) lub '/pl/strona-glowna'
// polityka prywatności w 'en'
getSystemPagePath({ page: settings.privacyPolicy, locale: 'en', config })
// → '/en/privacy-policy'
Zwraca undefined, gdy rola nieprzypisana lub dokument nie ma slug w danym
locale — caller decyduje o fallbacku (404, redirect).
Typowy przypadek: /{locale} → strona główna
W trasie [locale]/page.tsx czytasz settings.homepage, bierzesz jego slug
w bieżącym locale i renderujesz ten dokument. Link do polityki prywatności w
stopce / bannerze cookies bierzesz z getSystemPagePath({ role: privacyPolicy }).
Role
import { ALL_SYSTEM_PAGE_ROLES } from 'ipal-kit'
// ['homepage', 'privacyPolicy', 'cookiePolicy']