Как добавить номер страницы в заголовок списка постов блога в Hugo
Некоторые поисковые системы не любят, когда на сайте есть страницы с одинаковыми заголовками...
Чтобы добавить номер страницы к заголовку страницы списка постов в Hugo, необходимо изменить шаблон списка
(обычно layouts/blog/list.html или layouts/_default/list.html, иногда даже layouts/_default/baseof.html), чтобы определить, находитесь ли вы на пагинированной странице. Затем динамически изменяйте заголовок, добавляя номер страницы при необходимости.
Общее описание
Основная идея заключается в использовании встроенного объекта пагинатора Hugo и условном отображении номера страницы, если он больше 1. Вот как это можно сделать:
- Доступ к пагинатору:
Используйте
.Paginator
на странице списка для работы с пагинацией. - Проверка текущей страницы:
Используйте
.Paginator.PageNumber
, чтобы получить номер текущей страницы. - Условная логика заголовка:
- Если на странице 1, покажите обычный заголовок (
{{ .Title }}
). - Если на странице 2 или выше, добавьте
" - Страница X"
к вашему заголовку.
- Если на странице 1, покажите обычный заголовок (
Пример кода шаблона Hugo (для вашего list.html или в теге `` вашего baseof.html/layouts):
{{ .Title }}{{ if gt .Paginator.PageNumber 1 }} - Страница {{ .Paginator.PageNumber }}{{ end }}
Или в вашей фактической разметке страницы:
{{ .Title }}{{ if gt .Paginator.PageNumber 1 }} - Страница {{ .Paginator.PageNumber }}{{ end }}
Примечания:
- Это работает на пагинированных страницах списков (раздел, таксономия и т.д.), так как
.Paginator
доступен. .Paginator.PageNumber
возвращает номер текущей страницы.- Добавляйте “Страница X” только для последующих страниц, а не для первой страницы.
Ссылки:
- Руководства по спискам и пагинации Hugo показывают, что
.Paginator.Project
и динамические заголовки являются рекомендуемым способом. - Настройте расположение в зависимости от того, хотите ли вы это в заголовке браузера (т.е.,
<title>
) или в визуальных заголовках страниц.
Если вы хотите, чтобы номер страницы отображался в элементе HTML <title>
для SEO, разместите логику выше в нужном месте в заголовке HTML (часто layouts/_default/baseof.html). Для визуальных заголовков страниц разместите его там, где вы выводите заголовок раздела.
Нет официального шорткода для этого - это шаблон, установленный непосредственно с помощью Hugo в ваших шаблонах.
Модификация MainRoad
Этот сайт в настоящее время использует тему Mainroad. Чтобы улучшить SEO на страницах этого сайта, я исправил генерацию заголовков в индексах постов следующим образом:
<title>{{ block "title" . }}{{ if .IsHome }}{{ .Site.Title }}{{ if and (eq .Kind "home") .Paginator (gt .Paginator.PageNumber 1) }} - Страница {{ .Paginator.PageNumber }}{{ end }}{{ else }}{{ .Title }}{{ if and (in (slice "section" "taxonomy" "term") .Kind) .Paginator (gt .Paginator.PageNumber 1) }} - Страница {{ .Paginator.PageNumber }}{{ end }} - {{ .Site.Title }}{{ end }}{{ end }}</title>