フロントマター
Hugo では、コンテンツファイルに yaml、toml、json で記述されたフロントマターを追加できます。
フロントマター は、コンテンツタイプ のインスタンスに付けられたメタデータを保持できます — つまり、コンテンツファイルの中に埋め込むことができます — そして、Hugo の強みを示す多くの機能のうちの 1 つです。
フロントマターのフォーマット
Hugo は、フロントマターの 4 つのフォーマットをサポートしており、それぞれに識別用のトークンが用意されています。
- TOML
- 開始と終了に
+++
を使うことで識別されます - YAML
- 開始と終了に
---
を使うことで識別されます - JSON
- ‘
{
’ と ‘}
’ で囲まれ、その後に改行が続く単一の JSON オブジェクト - ORG
- ‘
#+KEY: VALUE
’ 形式の Org モード キーワードのグループです。#+
で始まらない行はフロントマターのセクションを終了します。 キーワードの値は、文字列 (#+KEY: VALUE
) または空白で区切られた文字列のリスト (#+KEY[]: VALUE_1 VALUE_2
) のいずれかです。
例
フロントマターの変数
事前定義済み
Hugo が認識している定義済み変数がいくつかあります。これらの定義済み変数の多くをテンプレートで呼び出す方法については、「ページ変数」 を参照してください。
- aliases
- 出力ディレクトリ構造に作成される 1 つ以上のエイリアス (たとえば、名前が変更されたコンテンツの古い公開パスなど) の配列です。 詳細については、「エイリアス」 を参照してください。
- audio
- ページに関連するオーディオ ファイルへのパスの配列です。
opengraph
内部テンプレート がog:audio
に入力するために使用します。 - cascade
- 自分自身またはより近い祖先のカスケードによって上書きされない限り、値がページの子孫に渡されるフロントマターのキーのマップです。 詳細については、「フロントマターのカスケード」 を参照してください。
- date
- このページに割り当てられた日付です。これは通常、フロントマターの
date
フィールドから取得されますが、この動作は設定可能です。 - description
- コンテンツの説明文を指定します。
- draft
true
の場合、--buildDrafts
フラグがhugo
コマンドに渡されない限り、コンテンツはレンダリングされません。- expiryDate
- Hugo がこの日を過ぎると、コンテンツを公開しない日時です。つまり、
hugo
コマンドに--buildExpired
フラグが渡されない限り、期限切れのコンテンツはレンダリングされません。 - headless
true
の場合、リーフバンドルは ヘッドレス に設定されます。- images
- ページに関連する画像へのパスの配列です。
_internal/twitter_cards.html
などの 内部テンプレート で使用されます。 - isCJKLanguage
true
の場合、Hugo は明示的にコンテンツを日中韓 (CJK) の言語として扱います。.Summary
と.WordCount
の両方が日中韓の言語で正しく機能します。- keywords
- コンテンツのメタキーワードを指定します。
- layout
- コンテンツをレンダリングする際に Hugo が 検索順序
から選択すべきレイアウトを指定します。フロントマターで
type
が指定されていない場合、Hugo はコンテンツのセクションに対応するレイアウト ディレクトリで同名のレイアウトを探します。詳細は、「コンテンツタイプ」 を参照してください。 - lastmod
- コンテンツが最後に更新された日時です。
- linkTitle
- コンテンツへのリンクを作成するために使用されます。 設定されている場合、Hugo はデフォルトで
title
の前にlinktitle
を使用します。 Hugo は コンテンツのリストをlinktitle
で並べ替える もできます。 - markup
- 実験的な機能 reStructuredText には
"rst"
を (rst2html
が必要)、 Markdown には"md"
(デフォルト) を指定します。 - outputs
- コンテンツに固有の出力形式を指定できます。 詳細は、「出力形式」 を参照してください。
- publishDate
- 将来的に、
--buildFuture
フラグがhugo
に渡されない限り、コンテンツはレンダリングされません。 - resources
- ページバンドルのリソースを設定するために使用されます。 詳細は、「ページリソース」 を参照してください。
- series
- このページが属するシリーズの配列です。
series
タクソノミー のサブセットで、opengraph
内部テンプレート がog:see_also
に入力するために使用されます。 - slug
- URL パスの最後のセグメントを上書きする。セクションページには適用されません。詳細は、URL 管理 を参照してください。
- summary
- ページ変数
.Summary
で記事の要約を提供するときに使われるテキストです。 詳細は、コンテンツサマリー セクションで確認できます。 - title
- コンテンツのタイトルを指定します。
- type
- コンテンツのタイプです。 この値は、フロントマターで指定されていない場合、ディレクトリ (すなわち、セクション ) から自動的に導き出されます。
- url
- URL パス全体を上書きします。通常ページとセクションページに適用できます。詳細は、URL 管理 を参照してください。
- videos
- ページに関連する動画へのパスの配列です。
opengraph
内部テンプレート によってog:video
に入力するために使用されます。 - weight
- リスト内のコンテンツの順序付け に使用されます。 重みが小さいほど優先度が高くなります。 そのため、ウェイトの低いコンテンツが最初に表示されます。 設定されている場合、0 は 未設定 の重みとして解釈されるため、重みは非ゼロである必要があります。
- <taxonomies>
- インデックスの 複数 形式のフィールド名です。 上記のフロントマターの例の
tags
とcategories
を参照してください。 ユーザー定義のタクソノミーの複数形は、定義済みのフロントマター変数のいずれとも同じにはできないことに注意してください。
ユーザー定義
フロントマターには、ニーズに合わせて任意のフィールドを追加することができます。これらのユーザー定義のキー値は、テンプレートで使用するために、単一の .Params
変数に格納されます。
以下のフィールドはそれぞれ .Params.include_toc
と .Params.show_comments
によってアクセスすることができます。 変数
セクションでは、Hugo のページレベルおよびサイトレベルの変数をテンプレートで使用するための詳細な情報を提供しています。
フロントマターのカスケード
どのノードやセクションも、予約されているフロントマターの cascade
キーの下で定義されている限り、フロントマターの値のセットを子孫に伝えることができます。
特定のページをターゲットにする
cascade
ブロックは、オプションの _target
キーワードを持つスライスで、異なるページセットを対象とした複数の cascade
値を使用できます。
_target
で使用できるキーワード:
- path
- /content の下のコンテンツ パスに一致する Glob
パターンで、 Unix スタイルのスラッシュが必要です。 これは仮想パスであるため、マウントルートから始まることに注意してください。 マッチングは二重アスタリスクをサポートしているので、
/blog/*/**
のようなパターンにマッチして、第 3 レベル以下のすべてのものと一致させることができます。 - kind
- ページの種類 (複数可) にマッチする glob パターンで、たとえば、"{home,section}"。
- lang
- ページの言語に一致する glob パターンで、たとえば、"{en,sv}"。
- environment
- ビルド環境に一致する glob パターンで、たとえば、"{production,development}"。
上記はすべて省略可能です。
例
content/blog/_index.md
ファイルには、
上記の例では、以下の場合を除き、ブログのセクションページとその子孫は、.Params.banner
が呼び出されたときに images/typewriter.jpg
を返します。
- その子孫は独自の
banner
値が設定されている。 - あるいは、より近い祖先ノードに独自の
cascade.banner
値が設定されている場合。
フロントマターを通してコンテンツを順序付けする
コンテンツのフロントマターで、コンテンツ固有の weight
を割り当てることができます。これらの値は、特にリストビューでの 順序付け
に便利です。
コンテンツの順序付けには weight
を、タクソノミーの中でのコンテンツの順序付けには <TAXONOMY>_weight
という規則を使用することができます。
リストビューでコンテンツを整理するために weight
をどのように使用できるかは、 「Hugo リストの順序付けとグループ化」
を参照してください。
Markdown のグローバル設定をオーバーライドする
プロジェクト設定で設定されたレンダリングオプション のオーバーライドとして、コンテンツのフロントマターで Markdown レンダリングに関するいくつかのオプションを設定できます。