# 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) ```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 ```ts 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 ```ts import { ALL_SYSTEM_PAGE_ROLES } from 'ipal-kit' // ['homepage', 'privacyPolicy', 'cookiePolicy'] ```