セクションページ テンプレート
セクションページに使用されるテンプレートは リスト であるため、リストページで使用できるすべての変数とメソッドを備えています。
セクション テンプレートにコンテンツとフロントマターを追加する
セクションページ テンプレートを効果的に活用するには、まず Hugo の コンテンツ構成
を理解し、特に、セクションやその他のリストページにコンテンツやフロントマターを追加するための _index.md
の目的を理解する必要があります。
セクション テンプレートの検索順序
「テンプレートの検索順序」 を参照してください。
ページの種類
Hugo のすべての Page
には、 .Kind
属性があります。
Kind | 説明 | 例 |
---|---|---|
home |
ホームページのランディングページ | /index.html |
page |
指定されたページのランディングページ | my-post ページ (/posts/my-post/index.html ) |
section |
指定されたセクションのランディングページ | posts セクション (/posts/index.html ) |
taxonomy |
タクソノミーのランディングページ | tags タクソノミー (/tags/index.html ) |
term |
あるタクソノミーの用語のランディングページ | tags タクソノミーの用語 awesome (/tags/awesome/index.html ) |
セクションを含む .Site.GetPage
Kind
はテンプレートの中で where
関数
と組み合わせることで、簡単にコンテンツの種類に応じたリストを作成できます。この方法はリストを作成するのに適していますが、セクションのパスを介して、単一のセクションのインデックスページだけを取得したい場合もあります。
.GetPage
関数
は、指定された Kind
と path
のインデックスページを検索します。
kind
(上記の Kind
の有効な値の 1 つ) と kind value
の 2 つの引数を指定して、.Site.GetPage
を呼び出すことができます。
例:
{{ .Site.GetPage "section" "posts" }}
{{ .Site.GetPage "page" "search" }}
例: デフォルトのセクション テンプレートを作成する
{{ define "main" }}
<main>
{{ .Content }}
<ul class="contents">
{{ range .Paginator.Pages }}
<li>{{ .Title }}
<div>
{{ partial "summary.html" . }}
</div>
</li>
{{ end }}
</ul>
{{ partial "pagination.html" . }}
</main>
{{ end }}
例: .Site.GetPage
を使用する
この後の .Site.GetPage
の例では、以下のようなプロジェクトのディレクトリ構造を想定しています。
.
└── content
├── blog
│ ├── _index.md # "title: My Hugo Blog" in the front matter
│ ├── post-1.md
│ ├── post-2.md
│ └── post-3.md
└── events #Note there is no _index.md file in "events"
├── event-1.md
└── event-2.md
.Site.GetPage
は _index.md
ページが見つからなければ、 nil
を返します。したがって、content/blog/_index.md
が存在しない場合、テンプレートはセクション名を出力します。
<h1>{{ with .Site.GetPage "section" "blog" }}{{ .Title }}{{ end }}</h1>
blog
は content/blog/_index.md
にフロントマターのあるセクション インデックスページを持っているので、上記のコードは以下の結果を返します。
<h1>My Hugo Blog</h1>
しかし、同じコードを events
セクションで試すと、Hugo はセクションのタイトルをデフォルトにします。コンテンツとフロントマターを取得するための content/events/_index.md
が存在しないためです。
<h1>{{ with .Site.GetPage "section" "events" }}{{ .Title }}{{ end }}</h1>
上記のコードは、以下を返します。
<h1>Events</h1>