Old Sunset Days

Hugoで自分で定義した分類(タクソノミー)を追加する

日付 タグ hugo カテゴリ hugo

目次

タクソノミー(taxonomy)はタグやカテゴリーだけじゃない

オリジナルなタクソノミー(taxonomy)を追加するのも難しくはない

この前、Hugoのタグやカテゴリーはタクソノミー(taxonomy)の機能を使えば、難しいことなく追加できるという記事を書いた (==> Hugoでタグやカテゴリーはどう扱うの? )

Hugoではオリジナルな分類をタクソノミー(taxonomy)を使って追加することも可能であり、それも難しくない。

例えば、技術ブログで、初級、中級、上級者向けに分類したくて、levelという分類名で、「beginner」「intermediate」 「advanced」といった分類分けを付与したいと考えた場合、

その場合は、config.tomlで

[taxonomies]
  level = "levels"

を追加して、その上で各Markdownの記事のヘッダー中で、

levels: [beginner]

といった設定を追加してやればいいのだ。

terms.htmlについては、 (==> Hugoでタグやカテゴリーはどう扱うの? ) を参考に同様な感じで処理を追加する。

{{ if eq .Title "Tags"}}
    <h2>タグ</h2>
    <ul style="list-style-type: none;">
        {{ range .Site.Taxonomies.tags.ByCount }}
        <li><a href="{{ "/tags/" | relURL }}{{ .Name | urlize }}">{{ .Name }}({{ .Count }})</a></li>
        {{ end }}
    </ul>
{{ else if eq .Title "Categories"}}
    <h2>カテゴリ</h2>
    <ul style="list-style-type: none;">
        {{ range .Site.Taxonomies.categories.ByCount }}
        <li><a href="{{ "/categories/" | relURL }}{{ .Name | urlize }}">{{ .Name }}({{ .Count }})</a></li>
        {{ end }}
    </ul>
{{ else if eq .Title "Levels"}}
    <h2>レベル</h2>
    <ul style="list-style-type: none;">
        {{ range .Site.Taxonomies.levels.ByCount }}
        <li><a href="{{ "/levels/" | relURL }}{{ .Name | urlize }}">{{ .Name }}({{ .Count }})</a></li>
        {{ end }}
    </ul>
{{ end }}

{{ else if eq .Title "Levels"}} の部分が今回levelという分類を追加した処理部分になる。

その上で、 http://[サイトのURL]/levels/ にアクセスすれば、

さらにここでbeginnerリンクをクリックすれば、

beginnerと紐づけられた記事が表示される。

以上で無事に今回試して追加したlevelというタクソノミーによる分類が追加できた。