Как добавить номер страницы в заголовок списка постов блога в Hugo

Некоторые поисковые системы не любят, когда на сайте есть страницы с одинаковыми заголовками...

Содержимое страницы

Чтобы добавить номер страницы к заголовку страницы списка постов в Hugo, необходимо изменить шаблон списка

(обычно layouts/blog/list.html или layouts/_default/list.html, иногда даже layouts/_default/baseof.html), чтобы определить, находитесь ли вы на пагинированной странице. Затем динамически изменяйте заголовок, добавляя номер страницы при необходимости.

hugo-site-generator

Общее описание

Основная идея заключается в использовании встроенного объекта пагинатора Hugo и условном отображении номера страницы, если он больше 1. Вот как это можно сделать:

  1. Доступ к пагинатору: Используйте .Paginator на странице списка для работы с пагинацией.
  2. Проверка текущей страницы: Используйте .Paginator.PageNumber, чтобы получить номер текущей страницы.
  3. Условная логика заголовка:
    • Если на странице 1, покажите обычный заголовок ({{ .Title }}).
    • Если на странице 2 или выше, добавьте " - Страница X" к вашему заголовку.

Пример кода шаблона 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>

Полезные ссылки