init commit for iPAL-kit plugin
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# 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']
|
||||
```
|
||||
Reference in New Issue
Block a user