Разбивка на страницы в Hugo не работает должным образом

Я хочу, чтобы в моей теме Hugo отображалось только 5 резюме сообщений на странице.

В моемconfig.tomlфайл я поместил следующее значение:

pagination = 5

Мойthemes/<theme_name>/layouts/_default/list.htmlвыглядит так:

      {{ define "main" }}
<div class="container">
<h1>{{ .Title }}</h1>
{{ range .Paginator.Pages.ByPublishDate.Reverse }}
<p>
<h3><a class="title" href="{{ .RelPermalink }}">{{ .Title }}</a></h3>
{{ partial "metadata.html" . }}
<p>{{ .Summary }}</p>
</p>
<a href="{{ .RelPermalink }}" className='text-decoration-none'><button type="button" class="btn btn-outline-danger">Read More</button></a>
{{ end }}
{{ template "_internal/pagination.html" . }}
</div>
{{ end }}

Что из всего, что я читал, включая документы, должно работать

Однако это не влияет на мою страницу сообщений, где отображается список сообщений. В настоящее время у меня есть 6 сообщений, и все сообщения перечислены на одной странице без отображения настроек разбиения на страницы. Нет ошибок, возвращаемых при выполненииhugo server -D

Я попытался удалить.ByPublishDate.Reverseот значения диапазона, но это также не влияет

Я считаю, что пропустил что-то фундаментальное, но я не уверен, где искать дальше. Любая помощь будет оценена по достоинству.

1 ответ

Вы должны убедиться, что ваш шаблон list.html использует функцию .Paginate для фактического разбиения сообщений на страницы.

Замените строку {{ range .Paginator.Pages.ByPublishDate.Reverse }} на следующую:

      {{ range (.Paginate (where .Data.Pages "Type" "post")).Pages }}

Это будет использовать функцию .Paginate для разбиения на страницы только страниц типа post (которые должны включать ваши сообщения в блоге), а затем перебирать каждую страницу сообщений с помощью функции .Pages.

Кроме того, вы можете изменить свой {{ шаблон "_internal/pagination.html" . }} для включения стилей и/или текста, чтобы было понятно, что нумерация страниц действует.

Пример:

      <div class="pagination">
  {{ if .Paginator.HasPrev }}
    <a href="{{ .Paginator.Prev.URL }}">← Newer Posts</a>
  {{ end }}
  {{ if .Paginator.HasNext }}
    <a href="{{ .Paginator.Next.URL }}">Older Posts →</a>
  {{ end }}
</div>
Другие вопросы по тегам