記事カテゴリー分類の機能を提供するのが Sectionです。
contents/
ディレクトリの直下にあるディレクトリをセクションと見なします。
素朴な使い方では、記事をフォルダ分類し、ビルド後のサイトも対応するPathに並ぶため直感的な動作と言えます。
セクションは、.Site.RegularPages
などのパラメータに指定でき、記事リストを手続き的に取得したい場合にはrange .Site.RegularPages "Section" "<some-section>"
のようにセクション名を指定します。
サブセクション
冒頭の公式ドキュメントの説明のとおり、contents/<some-section>/<sub-section>/
のようにネストしたサブセクションを用いて記事を整理できます。ただし、フォルダを作成するだけでなく<sub-section>/_index.md
も存在する必要があります。
hugoのリストページはlist.html
テンプレートに沿ってレンダリングしますが、サブセクションも一般的なlist.html
でレンダリングでき、期待どおり<sub-section>/
内の記事リストになります。
サブセクションはセクションではない
サブセクションのリストは自動的に抽出される一方、<some-section>/<sub-section>/
内の記事のセクションはトップレベルの<some-section>
になります。
よって、先ほどのrange .Site.RegularPages "Section" "<some-section>"
で抽出した場合には、<sume-section>
の子孫フォルダを含む記事をフラットに取り出す挙動になります。
サブセクションを直接操作するイディオムはありません。
サブセクションの記事セットを操作するには、.Site.GetPage
でリストページを取得し、.Pages
コレクションを利用します。
{{ with .Site.GetPage "page" "/<some-section>/<sub-section>/" }}
{{ range .Pages }}
<!-- Render each Page -->
{{ end }}
{{ end }}
Chuma Takahiro