Skip to main content

フロントマター

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>
インデックスの 複数 形式のフィールド名です。 上記のフロントマターの例の tagscategories を参照してください。 ユーザー定義のタクソノミーの複数形は、定義済みのフロントマター変数のいずれとも同じにはできないことに注意してください。

ユーザー定義

フロントマターには、ニーズに合わせて任意のフィールドを追加することができます。これらのユーザー定義のキー値は、テンプレートで使用するために、単一の .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 レンダリングに関するいくつかのオプションを設定できます。

フロントマターのフォーマット仕様