決定規則(検索順序)

はじめに

テンプレートは複数定義することができます。どのテンプレートが利用されるかは、以下のような要素によって決定します。全てのパターンを網羅すると量が多くなりすぎるので、よく利用すると思われるパターンに絞って説明します。詳細は、Hugo’s Lookup Orderを参照してください。

要素 Hugo変数 関連するパス 説明
テーマ .Theme ディレクトリ名 テーマ名。設定ファイルで設定。
種別 .Kind テンプレート名 ページ種別。home、section、pageなど。
レイアウト .Layout ディレクトリ名 ページのフロントマターで指定する。
出力フォーマット .OutputFormats テンプレート名 HTML、RSSなど。.OutputFormatsは、複数の要素を保持する変数です。
言語 .Language テンプレート名 ページの記述言語。
タイプ .Type ディレクトリ名 セクション名。セクション名がない場合は、“page”。フロントマターで指定(変更)可能。
セクション .Section ディレクトリ名、テンプレート名 セクション名。

テンプレートの選択方法

選択するテンプレートのタイプ

どのタイプのテンプレートが利用されるかは、ページの種類によって変わります。基本的には、以下の3種類のページが存在します(他にも存在しますが、私は使ってないので)。

種類 ディレクトリ ファイル名
ホームページ content 直下 _index.md
セクションページ content 直下以外のディレクトリ _index.md
通常ページ 任意のディレクトリ _index.md 以外
Taxonomyページ カテゴリ分け用のページ (_index.md)
Termページ Taxonomy内のキー (_index.md)

以下に、各ファイルが、どの種類に相当するのかの、一例を示します。

  • content/
    • _index.md ⇒ ホームページ(content直下の_index.md)
    • contact.md ⇒ 通常ページ(_index.md以外のマークダウンファイル)
    • blog/
      • _index.md ⇒ セクションページ(content直下以外の_index.md)
      • 2020-01-01.md ⇒ 通常ページ(_index.md以外のマークダウンファイル)
      • 2020-01-02.md ⇒ 通常ページ(_index.md以外のマークダウンファイル)
    • hugo/
      • _index.md ⇒ セクションページ(content直下以外の_index.md)
      • template/
        • index.md ⇒ 通常ページ(_index.md以外のマークダウンファイル)
        • images/
          • template.png
  • static/
    • images/
      • favicon.ico
    • js/
      • script.js

各ページ種類により利用する、基本となるテンプレート名は、以下の通りです。ホームページは、セクションページの特殊形態となっています。ホームページのデザインを他のセクションページと分ける必要がない場合は、list.htmlを使うことで、ホームページとセクションページのテンプレートファイルを共有させることもできます。

種類 baseof.html index.html section.html list.html single.html
ホームページ - -
セクションページ - -
通常ページ - - -

上記を見てわかるように、ホームページとセクションとで、同じテンプレートを利用するのであれば、index.htmlとsection.htmlを作成せずに、list.htmlを共有することもできます。ホームページの場合は、.IsHomeという変数が定義されているかどうかで、判断することができます。

ディレクトリ

テンプレートは、以下のlayoutsディレクトリに配置します。

  • root/
    • layouts/
    • themes/
      • <テーマ名>/
        • layouts/

ホームページ

Hugoでは、テンプレートを選択する際、ホームページを特別扱いしています。ホームページ専用のテンプレートを作成することができます。

  1. layouts/index.html
  2. layouts/home.html
  3. layouts/list.html
  4. layouts/_default/index.html
  5. layouts/_default/home.html
  6. layouts/_default/list.html

ベーステンプレートは、以下が利用されます。

  1. layouts/index-baseof.html
  2. layouts/home-baseof.html
  3. layouts/list-baseof.html
  4. layouts/baseof.html
  5. layouts/_default/index-baseof.html
  6. layouts/_default/home-baseof.html
  7. layouts/_default/list-baseof.html
  8. layouts/_default/baseof.html

セクションページ

セクションページでは、以下のテンプレートが利用されます。タイプ名とレイアウト名は、フロントマターで変更できます。

  1. layouts/<タイプ名>/<レイアウト名>.html
  2. layouts/<タイプ名>/<セクション名>.html
  3. layouts/<タイプ名>/section.html
  4. layouts/<タイプ名>/list.html
  5. layouts/<セクション名>/<レイアウト名>.html
  6. layouts/<セクション名>/<セクション名>.html
  7. layouts/<セクション名>/section.html
  8. layouts/<セクション名>/list.html
  9. layouts/section/<レイアウト名>.html
  10. layouts/section/<セクション名>.html
  11. layouts/section/section.html
  12. layouts/section/list.html
  13. layouts/_default/<レイアウト名>.html
  14. layouts/_default/<セクション名>.html
  15. layouts/_default/section.html
  16. layouts/_default/list.html

ベーステンプレートは、以下が利用されます。

  1. layouts/<タイプ名>/<レイアウト名>-baseof.html
  2. layouts/<タイプ名>/<セクション名>-baseof.html
  3. layouts/<タイプ名>/section-baseof.html
  4. layouts/<タイプ名>/baseof.html
  5. layouts/<セクション名>/<レイアウト名>-baseof.html
  6. layouts/<セクション名>/<セクション名>-baseof.html
  7. layouts/<セクション名>/section-baseof.html
  8. layouts/<セクション名>/baseof.html
  9. layouts/_default/<レイアウト名>-baseof.html
  10. layouts/_default/<セクション名>-baseof.html
  11. layouts/_default/section-baseof.html
  12. layouts/_default/baseof.html

通常ページ

通常ページでは、以下のテンプレートが利用されます。タイプ名とレイアウト名は、フロントマターで変更できます。タイプ名を設定した場合は、セクション名は利用できないようです。

  1. layouts/<タイプ名>/<レイアウト名>.html
  2. layouts/<タイプ名>/single.html
  3. layouts/<セクション名>/<レイアウト名>.html
  4. layouts/<セクション名>/single.html
  5. layouts/_default/<レイアウト名>.html
  6. layouts/_default/single.html

ベーステンプレートは、以下が利用されます。

  1. layouts/<タイプ名>/<レイアウト名>-baseof.html
  2. layouts/<タイプ名>/single-baseof.html
  3. layouts/<タイプ名>/baseof.html
  4. layouts/<セクション名>/<レイアウト名>-baseof.html
  5. layouts/<セクション名>/single-baseof.html
  6. layouts/<セクション名>/baseof.html
  7. layouts/_default/<レイアウト名>-baseof.html
  8. layouts/_default/single-baseof.html
  9. layouts/_default/baseof.html

Taxonomyページ

Taxonomyページでは、以下のテンプレートが利用されます。

  1. layouts/<Taxonomy名(複数形)>/<Taxonomy名(単数形)>.terms.html
  2. layouts/<Taxonomy名(複数形)>/terms.html
  3. layouts/<Taxonomy名(複数形)>/taxonomy.html
  4. layouts/<Taxonomy名(複数形)>/list.html
  5. layouts/<Taxonomy名(単数形)>/<Taxonomy名(単数形)>.terms.html
  6. layouts/<Taxonomy名(単数形)>/terms.html
  7. layouts/<Taxonomy名(単数形)>/taxonomy.html
  8. layouts/<Taxonomy名(単数形)>/list.html
  9. layouts/taxonomy/<Taxonomy名(単数形)>.terms.html
  10. layouts/taxonomy/terms.html
  11. layouts/taxonomy/taxonomy.html
  12. layouts/taxonomy/list.html
  13. layouts/_default/<Taxonomy名(単数形)>.terms.html
  14. layouts/_default/terms.html
  15. layouts/_default/taxonomy.html
  16. layouts/_default/list.html

Termページ

Termページでは、以下のテンプレートが利用されます。

  1. layouts/<Taxonomy名(複数形)>/term.html
  2. layouts/<Taxonomy名(複数形)>/<Taxonomy名(単数形)>.html
  3. layouts/<Taxonomy名(複数形)>/taxonomy.html
  4. layouts/<Taxonomy名(複数形)>/list.html
  5. layouts/term/<Taxonomy名(単数形)>.html
  6. layouts/term/taxonomy.html
  7. layouts/term/list.html
  8. layouts/taxonomy/term.html
  9. layouts/taxonomy/<Taxonomy名(単数形)>.html
  10. layouts/taxonomy/taxonomy.html
  11. layouts/taxonomy/list.html
  12. layouts/<Taxonomy名(単数形)>/term.html
  13. layouts/<Taxonomy名(単数形)>/<Taxonomy名(単数形)>.html
  14. layouts/<Taxonomy名(単数形)>/taxonomy.html
  15. layouts/<Taxonomy名(単数形)>/list.html
  16. layouts/_default/term.html
  17. layouts/_default/<Taxonomy名(単数形)>.html
  18. layouts/_default/taxonomy.html
  19. layouts/_default/list.html

最終更新日

February 7, 2021

inserted by FC2 system