updated docs
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# slug
|
||||
|
||||
Pole slug generowane automatycznie z tytułu, per locale.
|
||||
|
||||
## Użycie (kolekcja klienta)
|
||||
|
||||
```ts
|
||||
import { buildSlugField } from '@intecion/ipal-kit'
|
||||
|
||||
export const Pages: CollectionConfig = {
|
||||
slug: 'pages',
|
||||
fields: [
|
||||
{ name: 'title', type: 'text', required: true, localized: true },
|
||||
buildSlugField({ from: 'title' }),
|
||||
// ...
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
Zwraca gotowe pole: `slug`, text, localized, required, z hookiem
|
||||
`beforeValidate`.
|
||||
|
||||
## Zachowanie
|
||||
|
||||
Slug generuje się z pola źródłowego **tylko gdy jest pusty**. Cokolwiek edytor
|
||||
wpisze ręcznie, zostaje — także po zmianie tytułu. Zmiana adresu opublikowanej
|
||||
strony to zerwane linki, więc plugin nigdy nie robi tego sam.
|
||||
|
||||
Diakrytyki idą przez `slugify`: „Strona główna" → `strona-glowna`.
|
||||
|
||||
## Per locale
|
||||
|
||||
Slug jest zlokalizowany — każdy język ma własny. Edytując w PL ustawiasz
|
||||
`slug.pl`, w EN `slug.en`.
|
||||
|
||||
**Konsekwencja:** slug generuje się tylko dla locale, w którym wypełniono tytuł.
|
||||
Utworzysz stronę po polsku, przełączysz front na `/en/…` — 404, bo `slug.en`
|
||||
jest puste. Trzeba przełączyć locale w adminie i wpisać tytuł po angielsku.
|
||||
|
||||
To ta sama mapa slugów, z której powstają hreflang alternates (patrz seo.md) i
|
||||
przełącznik języka (patrz i18n.md).
|
||||
|
||||
## Opcje
|
||||
|
||||
```ts
|
||||
buildSlugField({
|
||||
from: 'title', // pole źródłowe
|
||||
name: 'slug', // nazwa pola (domyślnie 'slug')
|
||||
required: true, // domyślnie true
|
||||
})
|
||||
```
|
||||
|
||||
## Pomocnicze
|
||||
|
||||
```ts
|
||||
import { toSlug } from '@intecion/ipal-kit'
|
||||
|
||||
toSlug('Strona główna') // 'strona-glowna'
|
||||
```
|
||||
Reference in New Issue
Block a user