Hugo のタクソノミー機能の基本(タグやカテゴリなど)

タクソノミーとターム

Hugo では、多くのブログツールや CMS ツールと同様に、各ページに「タグ」や「カテゴリ」といった付加情報を付けてグルーピング(分類)することができます。 このグルーピング(分類)のことを タクソノミー (taxonomy) と呼んでいます。

タクソノミー (taxonomy)
グルーピング(分類)のための項目名。 例えば、「タグ」や「カテゴリ」といった分類名自体がタクソノミーです。 Hugo は、デフォルトで tagscategories というタクソノミーが定義されています。
ターム (term)
タクソノミーに割り当てる具体的な値。 例えば、あるページのタグとして、「経済」と「日本」という値を割り当てたとすると、「経済」と「日本」のことをタームと呼びます。 タグの一覧ページで表示される個々のタグ名がタームです。

コンテンツ(ページ)にタクソノミー・タームを割り当てる

コンテンツにタクソノミーを割り当てるには、記事先頭のフロントマター部分に、タクソノミー名とそこに割り当てるターム配列を記述します。 次の例では、tags:categories: というところでタクソノミーの設定を行なっています。

content/page.md
---
title: "記事のタイトル"
date: "2017-12-31"
tags: ["タグ1", "タグ2"]
categories: ["カテゴリ1", "カテゴリ2"]
---

この記事では、`tags` タクソノミーとして「タグ1」「タグ2」というターム、
`categories` タクソノミーとして「カテゴリ1」「カテゴリ2」というタームを割り当てています。

Hugo のデフォルトのタクソノミーとして、tagscategories が用意されています。 上記ではそれぞれのタクソノミーに タグ1カテゴリ1 といったタームを設定しています。

それぞれのタクソノミーの使い方は自由ですが、 どのタクソノミーにも複数のタームを割り当てることができます。 逆に、「1 種類のタクソノミーには 1 つのタームしか割り当てられない」という設定はできません。 そのような場合は、単純にフロントマターで categories に割り当てるタームを 1 つだけにする、といった運用でカバーします(それよりは、セクションの機能(ディレクトリ階層)で分けた方がよいですね)。 参考までに、1 つのページに複数のカテゴリを割り当ててしまった場合にエラー表示する方法を こちらで紹介しています

タクソノミータームの一覧ページ

コンテンツ(記事ページ)に何らかのタクソノミーを割り当てると、タクソノミーごとのターム一覧ページが自動的に生成されます。 例えば、tags タクソノミーに含まれているタームの一覧ページ(タグの一覧ページ)は、下記のようなアドレスでアクセスできるようになります。

https://example.com/tags/

同様に、categories タクソノミーに含まれているタームの一覧ページ(カテゴリの一覧ページ)は、下記のようなアドレスでアクセスできます。

https://example.com/categories/
☝️ ワンポイント これは、つまり、通常の記事ページとして tags.mdcategories.md という名前のファイルを作成してしまうと、上記のようなタームの一覧ページにはアクセスできなくなってしまうということを示しています。 このあたりは URL をシンプルに保つためのトレードオフですね。

上記のような一覧ページ(HTML ファイル)は Hugo の仕組みで自動的に生成されますが、デフォルトでは空っぽ(真っ白)の HTML ページが出力されるだけです。 タームの一覧ページを正しくレンダリングするには、専用のテンプレートファイルを作成しておく必要があります。 詳しくは、下記のページを参照してください。