【HUGO】リストのタイトル名が大文字になるのを防ぐ方法

スポンサーリンク

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 の設定が効きます。

やり方です。

  1. 各記事のフロントマターで、『categories』にセクション名を書きます。
  2. セクションページを無効化します。

セクションページは、『disableKinds』に『"section"』を指定すると無効化できます。

HUGOの設定ファイル『config.toml』に以下を追加します。

preserveTaxonomyNames = true
disableKinds = ["section"]

あとは、普通にカテゴリーページを作れば完成です。

これで、セクション名を大文字化させることなく、カテゴリページとしてセクションページを生成できます。

回避的な方法ではありますが、こちらも十分実用的なアプローチだと思います。

スポンサーリンク
HUGO
シェアする(押すとSNS投稿用の『編集ページ』に移動します)
フォローする(RSSフィードに移動します)
スポンサーリンク
シラベルノート
タイトルとURLをコピーしました