HUGO ja 非公式

  • ニュース
  • ドキュメント
  • テーマ
  • コミュニティ
  • GitHub
gohugoio Star づけ
  暫定公開中 2024/09/16 (94d7f576a 対応, 2024/09/15)
  • Hugo について
    • 本節
    • Introduction
    • Hugo の機能
    • Privacy
    • セキュリティ
    • ライセンス
  • インストール
    • 本節
    • macOS
    • Linux
    • Windows
    • BSD
  • はじめよう
    • 本節
    • クイックスタート
    • ディレクトリ構造
    • 基本操作
    • 設定
    • Configure markup
    • 用語集
    • 本書以外の学習リソース
  • クイックリファレンス
    • 本節
    • Emojis
    • Functions
    • Methods
    • Page collections
  • コンテント管理
    • 本節
    • コンテントの構成
    • ページバンドル
    • コンテントフォーマット
    • フロントマター
    • ビルドオプション
    • ページリソース
    • イメージ処理
    • ショートコード
    • 関連コンテント
    • Sections
    • Content types
    • アーキタイプ
    • 分類
    • Summaries
    • Links and cross references
    • URL 管理
    • メニュー
    • コメント
    • マルチ言語
    • Markdown attributes
    • シンタックスハイライト
    • Diagrams
    • Mathematics
    • Data sources
    • Content adapters
  • テンプレート
    • 本節
    • はじめに
    • Template types
    • Lookup order
    • 基本テンプレート
    • Home templates
    • Single templates
    • Section templates
    • Taxonomy templates
    • Term templates
    • 部分テンプレート
    • コンテントビューテンプレート
    • ショートコードテンプレート
    • サイトマップテンプレート
    • RSS テンプレート
    • 404 テンプレート
    • robots.txt templates
    • メニュー
    • ページネーション
    • Embedded templates
    • Custom output formats
  • 関数
    • 本節
    • cast
    • collections
    • compare
    • crypto
    • css
    • data
    • debug
    • diagrams
    • encoding
    • fmt
    • global
    • go template
    • hash
    • hugo
    • images
    • inflect
    • js
    • lang
    • math
    • openapi3
    • os
    • partials
    • path
    • reflect
    • resources
    • safe
    • strings
    • templates
    • time
    • transform
    • urls
  • メソッド
    • 本節
    • Duration
    • Menu
    • Menu entry
    • Page
    • Pager
    • Pages
    • Resource
    • Shortcode
    • Site
    • Taxonomy
    • Time
  • レンダーフック
    • 本節
    • Introduction
    • Blockquotes
    • Code blocks
    • Headings
    • Images
    • Links
    • Passthrough
    • Tables
  • Hugo モジュール
    • In this section
    • Configure Hugo modules
    • Use Hugo Modules
    • Theme components
  • Hugo パイプ
    • 本節
    • Introduction
    • Transpile Sass to CSS
    • PostCSS
    • PostProcess
    • JavaScript building
    • Babel
    • Asset minification
    • Concatenating assets
    • Fingerprinting and SRI hashing
    • Resource from string
    • Resource from template
  • CLI
  • トラブルシューティング
    • 本節
    • Logging
    • Inspection
    • Deprecation
    • Performance
    • FAQs
  • 開発ツール
    • 本節
    • Editor plugins
    • Front-ends
    • 検索
    • Migrations
    • Other projects
  • ホスティングと開発
    • 本節
    • Hugo Deploy
    • Deploy with Rclone
    • Deploy with Rsync
    • Host on 21YunBox
    • Host on AWS Amplify
    • Host on Azure Static Web Apps
    • Host on Cloudflare Pages
    • Host on Firebase
    • Host on GitHub Pages
    • Host on GitLab Pages
    • Host on KeyCDN
    • Host on Netlify
    • Host on Render
  • 貢献
    • 本節
    • Development
    • ドキュメント
    • Themes
  • メンテナンス
コンテント管理

アーキタイプ

アーキタイプとは新規コンテント生成時に用いるテンプレートのことです。

概要

コンテントファイルというものは フロントマター (front matter) とマークアップから構成されます。 マークアップは一般にはマークダウンのことです。 Hugo ではさらに別の コンテントフォーマット もサポートされます。 フロントマターは TOML, YAML, JSON による表現が可能です。

hugo new content コマンドを実行すると、content ディレクトリ下に新たなファイルを生成します。 その際にはアーキタイプ (archetype) を使ってテンプレートとして生成します。 デフォルトのアーキタイプを以下のように記述したとします。

archetypes/default.md
     
---
date: '{{ .Date }}'
draft: true
title: '{{ replace .File.ContentBaseName `-` ` ` | title }}'
---
+++
date = '{{ .Date }}'
draft = true
title = '{{ replace .File.ContentBaseName `-` ` ` | title }}'
+++
{
   "date": "{{ .Date }}",
   "draft": true,
   "title": "{{ replace .File.ContentBaseName `-` ` ` | title }}"
}

新規にコンテントを生成すると、Hugo はアーキタイプ内にある テンプレートアクション を確認します。

hugo new content posts/my-first-post.md

上で示したようなデフォルトのアーキタイプが用いられた場合、Hugo は以下のようなファイルを生成します。

content/posts/my-first-post.md
     
---
date: "2023-08-24T11:49:46-07:00"
draft: true
title: My First Post
---
+++
date = '2023-08-24T11:49:46-07:00'
draft = true
title = 'My First Post'
+++
{
   "date": "2023-08-24T11:49:46-07:00",
   "draft": true,
   "title": "My First Post"
}

アーキタイプは 1 つあるいは複数の コンテントタイプ に対して作ることができます。 たとえば post 生成時には特定のアーキタイプを利用するものとし、それ以外に対してはデフォルトのアーキタイプを利用するといった具合です。

archetypes/
├── default.md
└── posts.md

検索順

Hugo がアーキタイプを探す場所は、プロジェクトのルート配下にある archetypes ディレクトリです。 次にテーマあるいはインストールモジュールの archetypes ディレクトリを探します。 特定のコンテントタイプに対応するアーキタイプは、デフォルトのアーキタイプよりも優先されます。

たとえば以下のコマンドを実行したとします。

hugo new content posts/my-first-post.md

アーキタイプを検索する順は以下となります。

  1. archetypes/posts.md
  2. archetypes/default.md
  3. themes/my-theme/archetypes/posts.md
  4. themes/my-theme/archetypes/default.md

そのどれもが見つからなかった場合、Hubo はあらかじめ用意しているデフォルトのアーキタイプを用います。

関数とコンテキスト

アーキタイプ内では テンプレート関数 を利用できます。 上で示したように、デフォルトのアーキタイプ内では replace 関数を使っていて、そこではフロントマター内のタイトルを生成するにあたり、ハイフンをスペース文字に置換することを行っています。

アーキタイプは以下の コンテキスト (context) を受け取ります。

Date
(string) The current date and time, formatted in compliance with RFC3339.
File
(hugolib.fileInfo) Returns file information for the current page. See details.
Type
(string) The content type inferred from the top-level directory name, or as specified by the --kind flag passed to the hugo new content command.
Site
(page.Site) The current site object. See details.

Alternate date format

To insert date and time with an alternate format, use the time.Now function:

archetypes/default.md
     
---
date: '{{ time.Now.Format "2006-01-02" }}'
draft: true
title: '{{ replace .File.ContentBaseName `-` ` ` | title }}'
---
+++
date = '{{ time.Now.Format "2006-01-02" }}'
draft = true
title = '{{ replace .File.ContentBaseName `-` ` ` | title }}'
+++
{
   "date": "{{ time.Now.Format \"2006-01-02\" }}",
   "draft": true,
   "title": "{{ replace .File.ContentBaseName `-` ` ` | title }}"
}

コンテントを含むアーキタイプ

アーキタイプはフロントマターのテンプレートとして利用するのが普通ですが、これをコンテント生成のために利用することもできます。

たとえばドキュメントサイトを構築しているものとして、関数に対するセクション (コンテントタイプ) を生成するものとします。 そのセクションの下で作られるページは同一のフォーマットに従うはずです。 たとえば概要説明、関数構文、利用例、備考などといった具合です。 コンテント作者が標準的なフォーマットを忘れないようにするため、ページの構成を事前に与えておくことができます。

archetypes/functions.md
---
date: '{{ .Date }}'
draft: true
title: '{{ replace .File.ContentBaseName `-` ` ` | title }}'
---

関数の動作に関する簡単な説明。三人称単数、現在形を利用。たとえば以下のとおり。

`someFunction` は文字列 `s` を `n` 回繰り返して返す。

## 関数構文

```text
func someFunction(s string, n int) string
```

## 利用例

1 つまたはそれ以上の利用例を、それぞれ枠囲いのコードブロックにより表現。

## 備考

必要に応じて内容を明らかにする追加の情報。

このコンテントの本文中に テンプレートアクション を含めることもできます。 ただし Hugo がそれを処理するのは一度きり、つまりコンテント生成時のみであることを忘れないでください。 普通、テンプレートアクションは テンプレート 内に置きます。 そうすることで Hugo がサイトを ビルド するたびに、そのアクションを評価します。

リーフバンドル

You can also create archetypes for leaf bundles.

For example, in a photography site you might have a section (content type) for galleries. Each gallery is leaf bundle with content and images.

Create an archetype for galleries:

archetypes/
├── galleries/
│   ├── images/
│   │   └── .gitkeep
│   └── index.md      <-- same format as default.md
└── default.md

Subdirectories within an archetype must contain at least one file. Without a file, Hugo will not create the subdirectory when you create new content. The name and size of the file are irrelevant. The example above includes a .gitkeep file, an empty file commonly used to preserve otherwise empty directories in a Git repository.

To create a new gallery:

hugo new galleries/bryce-canyon

This produces:

content/
├── galleries/
│   └── bryce-canyon/
│       ├── images/
│       │   └── .gitkeep
│       └── index.md
└── _index.md

別のアーキタイプの利用

コマンドラインフラグ --kind を利用すると、コンテント生成時に別のアーキタイプを指定することができます。

たとえばサイト上に 2 つのセクション、つまり記事 (article) とチュートリアル (tutorial) があるとします。 この 2 つのコンテントタイプごとにアーキタイプを生成します。

archetypes/
├── articles.md
├── default.md
└── tutorials.md

そして記事向けのアーキタイプを使って記事を生成します。

hugo new content articles/something.md

次にチュートリアル向けのアーキタイプを使って記事を生成します。

hugo new content --kind tutorials articles/something.md

関連項目

  • フロントマター
  • 分類
  • Content adapters
  • Markdown attributes
  • Mathematics in Markdown

このページ内

  • 概要
  • 検索順
  • 関数とコンテキスト
  • Alternate date format
  • コンテントを含むアーキタイプ
  • リーフバンドル
  • 別のアーキタイプの利用
最終更新日付: 0001/01/01
ページの変更
Hugo 作者より
Hugo Logo
  • Issue 報告
  • ヘルプ
  • @GoHugoIO
  • @spf13
  • @bepsays
 

Hugo Sponsors

Route4Me
Your Company?
 

The Hugo logos are copyright © Steve Francia 2013–2024.

The Hugo Gopher is based on an original work by Renée French.

  • ニュース
  • ドキュメント
  • テーマ
  • コミュニティ
  • GitHub
  • Hugo について
  • インストール
  • はじめよう
  • クイックリファレンス
  • コンテント管理
  • テンプレート
  • 関数
  • メソッド
  • レンダーフック
  • Hugo モジュール
  • Hugo パイプ
  • CLI
  • トラブルシューティング
  • 開発ツール
  • ホスティングと開発
  • 貢献
  • メンテナンス