hugoのSection

記事カテゴリー分類の機能を提供するのが 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 }}
⁋ 2024/05/13↻ 2024/10/04
中馬崇尋
Chuma Takahiro