Fixed support for multi-langual slugs
This commit is contained in:
+58
-1
@@ -784,4 +784,61 @@ const jsonLd = buildFaqJsonLd(
|
||||
WAŻNE: Q&A musi odpowiadać widocznej treści strony (Google flaguje rozbieżność).
|
||||
Nie wymyślaj pytań, których nie ma na stronie.
|
||||
|
||||
Wszystkie: dane z panelu (company, bloki), jako `<script type="application/ld+json">`.
|
||||
Wszystkie: dane z panelu (company, bloki), jako `<script type="application/ld+json">`.
|
||||
|
||||
## Wielojęzyczna strona główna — homeSlug per język (naprawione 1.2)
|
||||
|
||||
Gdy strona główna ma RÓŻNE slugi per język (pl: `strona-glowna`, de: `startseite`),
|
||||
plugin obsługuje mapę homeSlug — każdy język zwija się do swojego roota (`/pl`,
|
||||
`/de`), a hreflang wskazuje poprawnie (nie `/de/startseite`).
|
||||
|
||||
- **readSiteMetaConfig** czyta slug homepage per język (`locale: 'all'`) → mapa.
|
||||
- **buildLocalizedPath** przyjmuje `homeSlug: string | Record<string, string>`.
|
||||
- **hreflang** dostaje mapę → poprawne return tags (koniec błędu GSC „Missing
|
||||
return tags”).
|
||||
|
||||
Działa automatycznie przez createPageMetadata. Warunek: strona główna musi mieć
|
||||
slug wypełniony w KAŻDYM języku (panel, per locale).
|
||||
|
||||
## Sitemap wielojęzyczny — <url> per język (naprawione 1.2)
|
||||
|
||||
Sitemap emituje osobny `<url>` dla KAŻDEGO języka (nie tylko domyślnego). Zgodnie
|
||||
z wymogiem Google: każda wersja językowa = osobny `<loc>` + alternates. GSC liczy
|
||||
teraz wszystkie wersje (8×3 = 24, nie 8). Działa automatycznie w buildSitemapEntries.
|
||||
|
||||
## Aliasy strony głównej — 301 zamiast 200 (do wpięcia w projekcie)
|
||||
|
||||
PROBLEM: `/pl/strona-glowna` (pełny slug home) zwraca 200, tak jak `/pl` (root).
|
||||
Google widzi duplikat („Duplikat bez URL kanonicznego”).
|
||||
|
||||
ROZWIĄZANIE (projekt): w page.tsx, jeśli slug odpowiada slugowi strony głównej
|
||||
w danym języku, zrób redirect 301 na root:
|
||||
|
||||
```ts
|
||||
// page.tsx — po resolveRoute
|
||||
const homeSlugForLocale = /* slug home w tym języku, z settings */
|
||||
if (slug?.length === 1 && slug[0] === homeSlugForLocale) {
|
||||
redirect(`/${locale}`) // 301 do roota, nie serwuj duplikatu
|
||||
}
|
||||
```
|
||||
|
||||
Plugin nie robi tego automatycznie (redirect to decyzja projektu — Next redirect
|
||||
w page.tsx). Ale warto wpiąć, żeby nie mieć duplikatów w GSC. Alternatywnie:
|
||||
canonical strony `/pl/strona-glowna` wskazujący na `/pl` (mniej czyste niż 301).
|
||||
|
||||
## Article/BlogPosting JSON-LD (blog)
|
||||
|
||||
Dla wpisów blogowych — buildArticleJsonLd generuje Article/BlogPosting rich
|
||||
results (headline, data, autor, obraz):
|
||||
|
||||
```ts
|
||||
import { buildArticleJsonLd } from '@intecion/ipal-kit'
|
||||
const jsonLd = buildArticleJsonLd({
|
||||
headline: post.title, url: postUrl, description: post.excerpt,
|
||||
image: post.coverImage, datePublished: post.publishedAt,
|
||||
author: post.author, publisherName: settings.siteName,
|
||||
publisherLogo: settings.logo, type: 'BlogPosting',
|
||||
})
|
||||
```
|
||||
|
||||
Dane z dokumentu/panelu. Google wymaga headline + dat dla rich result.
|
||||
Reference in New Issue
Block a user