ページネーションの修正

下記コミットの内容についての記事です。

tags画面の修正

Tags ページを見ていたらテーマを確認したところページネーションがうまくいっていないことを確認。
下記の記述になっていました。

  • layouts/_default/single.html
{{ range .Pages }}
    <div class="index-posts__list">
        <div class="l-time"><a href="{{.Permalink}}">{{ .Date.Format "2006.01.02 15:04" }}</a></div>
        <div class="l-title"><a href="{{.Permalink}}">{{ .Title }}</a></div>
    </div>
{{ end }}

<div class="index-paginate">
    {{ partial "pagination.html" . }}
</div>

単純に Pagination が使われていないのを確認、使うように修正。

- {{ range .Pages }}
+ {{ range .Paginator.Pages }}

ページネーションの修正

他におかしいところないかと大量に記事を追加して確認するとエラーが。。

pagination.html:106:28": execute of template failed at <$pag.Last.Permalink>: can’t evaluate field Permalink in type *page.Pager

Pagination のドキュメントを眺めると .Last はあるけど .Last.Permalink については書かれていない。
よく見るとドキュメントに正しい書き方があるのでそれに修正する。

  • layouts/partials/pagination.html
<!-- Last page. -->
- {{ if ne $pag.PageNumber $pag.TotalPages }}
- <li><a href="{{ $pag.Last.Permalink }}">&#62;&#62;</a></li>
+ {{ with $pag.Last }}
+ <li><a href="{{ .URL }}">&#62;&#62;</a></li>
{{ end }}

あとはドキュメントを見ながら同様に .First.Prev.Next を修正する。

最後に

使用しているテーマ hugo-theme-yuki は2020年にリポジトリはアーカイブされています。
フォークして使っていますが、やっぱりメンテは大変 (数年放置してましたが) ですが勉強になりますね。