Hugo用語集セクションのテンプレ最適化実践ガイド(テンプレ複製地獄を避ける!)

目次
もしHugoの用語集(glossary)セクションだけ独自のナビやレイアウトにしたいなら、テンプレ複製に悩まずサクッと簡単に管理できるやり方がある。本当に大事なポイント&「なるほど!」な気づきをまとめてみた。
Step 1: glossaryセクションの作成
用語集(glossary)用のMarkdownファイルを
content/en/glossary/
や content/ja/glossary/
に配置するだけでOK!何か特別な設定やファイルは不要。
ディレクトリ例:
content/
en/
glossary/
apple.md
bitcoin.md
ja/
glossary/
apple.md
bitcoin.md
Step 2: glossary専用ナビゲーションpartialを作成
glossaryページだけ独自ナビにしたいなら、
layouts/partials/glossary/nav.html
を作成し、ここに用語集専用ナビHTMLを記述するだけ。
用語リストやインデックス、何でもOK!
Step 3: glossary用baseof.htmlで専用レイアウト
Hugoの強みのひとつは、セクション単位でbaseテンプレートを用意できること!
layouts/glossary/baseof.html
例:
<!DOCTYPE html>
<html lang="{{ .Lang }}">
<head>
{{ partial "head.html" . }}
</head>
<body>
{{ partial "glossary/nav.html" . }}
{{ block "main" . }}{{ end }}
{{ partial "footer.html" . }}
</body>
</html>
これでglossary配下だけ自動で専用nav+設計を使える!
Step 4: single.htmlの複製は不要
最初は layouts/glossary/single.html
も作らないと反映されないかと思うけど、
実はほとんどの場合いらない!
フロントマターが正しければ layouts/glossary/baseof.html
だけで十分。
プロ技:Hugoが判断するのは「type」か「フォルダ名」
type
を未指定にすると、Hugoは親ディレクトリ名(ここでは “glossary”)をtype扱いにする- つまり
content/en/glossary/
配下の.mdはtype
なし- または
type = "glossary"
どちらでも自動的にlayouts/glossary/baseof.html
を使う!
本当に大事なのはfront matter
もしglossaryファイルのフロントマターに
type = "post"
があると、絶対にglossaryレイアウトは反映されない!
対応策:
- typeを消す(←一番おすすめ!)
- もしくは
type = "glossary"
にする
これだけでセクション専用レイアウト・ナビが自動で効く!
ディレクトリ構成例
layouts/
glossary/
baseof.html # 用語集だけの専用ベースレイアウト
partials/
nav.html # 全体用ナビ
glossary/
nav.html # 用語集だけのナビ!
_default/
baseof.html # その他用
まとめ
content/en/glossary/
にMarkdownを置くだけでセクション分離可能(特別な設定は不要)layouts/partials/glossary/nav.html
とlayouts/glossary/baseof.html
でカスタムレイアウトにできるsingle.html
の複製や分岐は不要- フロントマターだけ要確認!
- type = “post” を絶対使わない
- type未指定 or type = “glossary"でOK
覚えておきたいこと:
テンプレ反映はcontentの構成やfront matter次第!
テンプレやpartialの複製・if分岐より「どう配置・命名するか」が本質。
このやり方なら、シンプル・DRYで最強構成!
カスタムセクションのテンプレ管理で悩んだらぜひ参考にしてみて。
Happy Hugo theming! 🎉
著者について

Genx
1982年生まれ、日本人のビートメイカー・音楽プロデューサー。実験的なヒップホップビートを制作。国際的な環境で育ったため英語が話せる。趣味は筋トレ、アートワーク制作、ウェブサイトカスタマイズ、Web3。韓国が大好き。
ウェブサイト:genxrecords.xyz