Hugo でセクションを持たない記事ページ(ルートの記事ページ)の一覧を表示する (.Site.Home.RegularPages)

Home ページ直下の記事ページ = セクションを持たないページ

ホームページを示す Page オブジェクトの RegularPages プロパティを参照すると、content ディレクトリ直下に置かれた通常ページの一覧 を取得することができます。 つまり、どのセクションにも所属していない記事ページの一覧です。

<h3>セクションを持たない記事ページ一覧(タイトル順)</h3>
<ol>
  {{ range .Site.Home.RegularPages.ByTitle }}
    <li><a href="{{ .RelPermalink }}">{{ .Title }}</a>
  {{ end }}
</ol>

さらに first 関数を組み合わせて使用すれば、最初の 5 件のみに絞り込んで表示することができます。

<h2>セクションを持たない記事ページ一覧(最初の5件)</h2>
<ol>
  {{ range first 5 .Site.Home.RegularPages.ByTitle }}
    <li><a href="{{ .RelPermalink }}">{{ .Title }}</a>
  {{ end }}
</ol>

(コラム)Hugo v0.58.0 より前のバージョンでのやり方

Hugo v0.58.0 より前のバージョンでは、ホームページの Page オブジェクトの .RegularPages が、サイト全体の記事ページを返してしまっていたので、別の方法でセクションに所属していない記事ページを取得する必要がありました。 例えば、$.Site.RegularPages で取得したサイト内の記事ページの一覧(Page 配列)を、where 関数を使ってフィルタすることで、目的の記事ページだけに絞り込んでいました。

<h3>セクションを持たない記事ページ一覧(タイトル順)</h3>
<ol>
  {{ range (where $.Site.RegularPages "Section" "").ByTitle }}
    <li><a href="{{ .RelPermalink }}">{{ .Title }}</a>
  {{ end }}
</ol>