1.2.0: local SEO structured data (LocalBusiness, Service, FAQPage), noindex per page

This commit is contained in:
2026-09-08 12:49:49 +02:00
parent e39e2a361a
commit 068415849f
34 changed files with 1030 additions and 104 deletions
+15
View File
@@ -55,6 +55,21 @@ buildLocalizedPath({ slugs, locale: 'en', config }) // '/en/about'
buildLocalizedPath({ slugs: { en: 'home' }, locale: 'en', config }) // '/en'
```
> **Pułapka typu (TypeScript):** przy `locale: 'all'` Payload w RUNTIME zwraca
> zlokalizowane pole jako obiekt `{ pl, en }`, ale wygenerowane typy Payloada
> deklarują `doc.slug` jako `string` (typ nie odróżnia trybu `all`). `tsc`
> zgłosi więc niezgodność. Rozwiązanie — czyste rzutowanie na oczekiwany przez
> helper typ:
> ```ts
> const slugs = getLocalizedSlugs({
> slugField: doc.slug as unknown as Record<string, unknown>,
> config,
> })
> ```
> To nie hack — to pomost między statycznym typem (string) a rzeczywistym
> kształtem runtime (obiekt), którego generator typów Payloada nie modeluje.
> `as unknown as` jest tu poprawne, bo TS nie zna trybu `all`.
### Przełącznik języka (bez 404)
```ts