HUGOは『list.html』で『section』、『categories』、『tags』のリストページを作るときに、『.Title』の内容を大文字にしてしまいます。
もう少し正確に言うと、セクション名、カテゴリ名、タグ名の頭文字を大文字にして、一部の特殊記号なども削除してしまいます。
そこで、設定した通りの名前で表示するために、これらを無効化する方法を紹介します。
ただし、セクション名に関しては、無効化する方法が見つかりませんでした。
なので、そこは自分が採用している運用回避的な対処方法を紹介します。
『config.toml』に『preserveTaxonomyNames = true』を追加します
HUGOの設定ファイル『config.toml』に、以下の設定を追加すれば防げます。
『保つ』が『プリザーブ (preserve)』です。
preserveTaxonomyNames = true
※ これは『config.toml』の場合の書き方です。config.yaml や config.json の場合は、それぞれの書式で preserveTaxonomyNames に true を設定します。
HUGOの公式マニュアルの場所です。
Configure Hugo
All Configuration Settings
この中を『preserveTaxonomyNames』で検索すると見つかります。
Taxonomies
Preserve Taxonomy Values
『preserveTaxonomyNames』の効果が書かれています。
なお、『preserveTaxonomyNames』で大文字にしたり無効化したりできるのは、『カテゴリ名』と『タグ名』です。
セクション名が大文字になるのは防げないようでした。
以上です
以下、セクション名の大文字化を回避する方法です。
セクション名が大文字になるのを防ぐには?
自分は2種類のアプローチを組み合わせています。
- replace関数で .Title を書き換える方法(根本的)
- セクションページを使わない方法(回避的)
replace関数でタイトルを置換するアプローチ
もし、セクション名のリストページでタイトルを元通り表示したい場合は、HUGOのif文とreplace関数を組み合わせて、個別にタイトルを修正することになります。
もっと簡単な方法があるのかもしれませんが、探しても見つかりませんでした。
なので、どうしてもセクション名を大文字化されては困る場合は、『if文』と『replace関数』を使って、大文字になったタイトルを書き換えます。
HUGOの公式マニュアルの場所です。
Introduction to Hugo Templating
Example 4: if .. else
if文の解説です。
FUNCTIONS replace
replace関数(置換関数)の解説です。
セクションページの生成を無効化するアプローチ
そもそも、セクションページを使わなければ良いというアプローチです。
たとえば、カテゴリをセクションに見立てます。
代わりに、タグをセクションに見立ててもいいです。
そうすれば、preserveTaxonomyNames の設定が効きます。
やり方です。
- 各記事のフロントマターで、『categories』にセクション名を書きます。
- セクションページを無効化します。
セクションページは、『disableKinds』に『"section"
』を指定すると無効化できます。
HUGOの設定ファイル『config.toml』に以下を追加します。
preserveTaxonomyNames = true
disableKinds = ["section"]
あとは、普通にカテゴリーページを作れば完成です。
これで、セクション名を大文字化させることなく、カテゴリページとしてセクションページを生成できます。
回避的な方法ではありますが、こちらも十分実用的なアプローチだと思います。