一覧ページしたい(/layouts/_default/list.html)
{{ define "main" }}
<h1>{{ .Title }}</h1>
{{ .Content }}
{{ range .Pages }}
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
{{ .Summary }}
{{ end }}
{{ end }}
セクションやタクソノミーなど、複数ページの一覧を表示するテンプレートです。
ベーステンプレートで定義したmainブロック({{ define "main" }})の中身を書いたサンプルです。
.Pagesで配下のページを取得し、rangeで反復してタイトルとサマリーを並べます。
ページ送りしたい(.Paginate)
{{ define "main" }}
<section class="list">
<!-- リストのタイトル -->
<div>
{{ range (.Paginate .RegularPages).Pages.ByLastmod.Reverse }}
{{ partial "article-card" . }}
{{ end }}
</div>
</section>
{{ end }}
.Paginateで一覧を指定件数ごとに分割できます。
分割件数はpaginationの設定でサイト全体に対して指定します。
.RegularPagesで子ページ(一覧ページ自身は除く)だけを取得し、
.ByLastmod.Reverseで更新日時の新しい順に並び替えています。
{{ partial "article-card" . }}は/layouts/partials/article-card.htmlを呼び出す部分テンプレートです。
記事1件分の表示を部分テンプレート側に切り出しておくと、一覧ページと関連記事など複数箇所で使い回せます。