feat: pagination forms and suffixes in resolve and site

- Pagination tab: query or path form, per-locale segment, title and
  description suffixes with %page% and %pages%
- ?page=1, /<segment>/1 and the other form answer 301 to the configured
  address in one hop with normalisation and strict URLs; a page value
  that is not a number answers not_found with pagination.invalid
- page 2 and later: self canonical with the page, index,follow, the
  suffixes (%pages% left for the layer), paged hreflang alternates
- GET /site answers pagination {form, param, segments} and home_crumb
This commit is contained in:
Jakub Zych
2026-11-04 14:22:21 +01:00
parent fde5024b5a
commit 032d3dae45
12 changed files with 763 additions and 144 deletions

View File

@@ -216,6 +216,20 @@ settings:
hours_order: "Closing must come after opening."
country_invalid: "Use a two-letter country code, e.g. PL."
coordinate_invalid: "Enter decimal degrees: latitude from -90 to 90, longitude from -180 to 180."
tab_pagination: "Pagination"
page_form: "Page address form"
page_form_query: "Query parameter: /blog?page=2"
page_form_path: "Path segment: /blog/strona/2"
page_form_comment: "A change sends every address in the other form to this one with a 301. ?page=1 always redirects to the address without a number."
page_segment: "Path segment"
page_segment_comment: "Used with the path form, per language, e.g. strona or page."
page_title_suffix: "Title suffix on page 2 and later"
page_title_suffix_comment: "Added after the page title, before the rest of the title template. Placeholders: %page%, %pages%."
page_title_suffix_default: "– page %page% of %pages%"
page_description_suffix: "Description suffix on page 2 and later"
page_description_suffix_comment: "Added at the end of the meta description. Placeholders: %page%, %pages%."
page_description_suffix_default: "Page %page% of %pages%."
page_segment_invalid: "Use lowercase letters, digits and hyphens only, e.g. strona."
rules:
new: New URL rule
list_title: URL rules

View File

@@ -218,6 +218,20 @@ settings:
hours_order: "Godzina zamknięcia musi być późniejsza niż otwarcia."
country_invalid: "Użyj dwuliterowego kodu kraju, np. PL."
coordinate_invalid: "Wpisz stopnie dziesiętne: szerokość od -90 do 90, długość od -180 do 180."
tab_pagination: "Stronicowanie"
page_form: "Forma adresu strony"
page_form_query: "Parametr: /blog?page=2"
page_form_path: "Segment ścieżki: /blog/strona/2"
page_form_comment: "Zmiana przekierowuje (301) każdy adres w drugiej formie na tę. ?page=1 zawsze przekierowuje na adres bez numeru."
page_segment: "Segment ścieżki"
page_segment_comment: "Używany w formie ścieżki, osobno dla każdego języka, np. strona lub page."
page_title_suffix: "Dopisek do tytułu od strony 2"
page_title_suffix_comment: "Dodawany po tytule strony, przed resztą szablonu tytułu. Znaczniki: %page%, %pages%."
page_title_suffix_default: "– strona %page% z %pages%"
page_description_suffix: "Dopisek do opisu od strony 2"
page_description_suffix_comment: "Dodawany na końcu opisu meta. Znaczniki: %page%, %pages%."
page_description_suffix_default: "Strona %page% z %pages%."
page_segment_invalid: "Użyj tylko małych liter, cyfr i łączników, np. strona."
rules:
new: Nowa reguła adresu
list_title: Reguły adresów