Skip to main content

セクション

Hugo は、コンテンツにマッチした セクションツリー を生成します。

セクション は、content/ ディレクトリの下の組織構造に基づいて定義されるページのコレクションです。

デフォルトでは、ブランチバンドル を構成する場合、content/ の下のすべての 第 1 レベル ディレクトリは独自のセクション (ルート セクション) を形成します。 リーフバンドル だけのディレクトリは、第 1 レベルのディレクトリであるにもかかわらず、独自のセクションを形成することは ありません

ユーザーがより深いレベルでセクション foo を定義する必要がある場合には、 _index.md ファイルを含む foo という名前のディレクトリを作成する必要があります (より詳細な情報は、ブランチバンドル を参照してください)。

セクション は、フロントマター パラメータで定義またはオーバーライドすることはできません。 それはコンテンツ組織構造から厳密に導出されます。

ネストされたセクション

セクションは、必要なだけ深くネストできます。

content
└── blog        <-- content/ の下の第 1 レベルのディレクトリのため、セクション
    ├── funny-cats
    │   ├── mypost.md
    │   └── kittens         <-- _index.md を含むため、セクション
    │       └── _index.md
    └── tech                <-- _index.md を含むため、セクション
        └── _index.md

理解すべき重要な点は、セクションツリーを完全にナビゲートするためには、少なくとも最下段のセクションはコンテンツファイル (たとえば、 _index.md) が必要であるということです。

テンプレート選択との関連で セクション について話すとき、現在のところ、それは常に ルートセクション のみです (/blog/funny-cats/mypost/ => blog)。

サブセクションに特定のテンプレートが必要な場合は、フロントマターで typelayout のどちらかを調整する必要があります。

例: パンくずリスト

利用可能な セクション変数とメソッド を使用すると、強力なナビゲーションを構築できます。一般的な例の 1 つは、パンくずリストを表示するパーシャルです。

layouts/partials/breadcrumb.html
<nav aria-label="breadcrumb">
  <ol>
    {{ range .Ancestors.Reverse }}
      <li>
        <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
      </li>
    {{ end }}
    <li class="active">
      <a aria-current="page" href="{{ .Permalink }}">{{ .LinkTitle }}</a>
    </li>
  </ol>
</nav>

セクション ページの変数とメソッド

ページ変数 も参照してください。

.CurrentSection
ページの現在のセクションです。 セクションまたはホームページの場合、この値はページそのものになります。
.FirstSection
ルート以下のページの最初のセクションで、たとえば /docs/blog などです。
.InSection $anotherPage
指定されたページが現在のセクションにあるかどうか。
.IsAncestor $anotherPage
現在のページが指定されたページの祖先であるかどうか。
.IsDescendant $anotherPage
現在のページが指定されたページの子孫であるかどうか。
.Parent
セクションの親セクション、またはページのセクションです。
.Section
このコンテンツが属する セクション です。注意: ネストされたセクションの場合、これはディレクトリ内の最初のパス要素、たとえば、/blog/funny/mypost/ => blog のようになります。
.Sections
このコンテンツの下にある セクション です。

コンテンツセクションのリスト

Hugo は、各 ルートセクション に、そのセクションのすべてのコンテンツを一覧表示するページを自動的に作成します。これらのページのレンダリングする方法のカスタマイズの詳細については、「セクション テンプレート」 のドキュメントを参照してください。

コンテンツ セクション とコンテンツ タイプ の違い

デフォルトでは、セクション内で作成されたものはすべて、ルートセクション 名と一致する コンテンツ タイプ を使用します。 たとえば、Hugo は posts/post-1.mdposts というコンテンツ type を持っていると仮定します。 posts セクションに アーキタイプ を使用している場合、Hugo は archetypes/posts.md で見つけたものに従ってフロントマターを生成します。