Hugoアップデートでサイトが動かない!フォルダ構成の変更とSummary対策でハマった話

久しぶりにブログ書くぞ~!と、Hugoのアップデートを気軽にしたらテンプレートにあちこちエラーが出まして……動かなくなっちゃった…!

あれこれハマりつつ、公式サイトと睨めっこしながらなんとかテンプレート改修しました。

新しいバージョン (v0.149.0) になって変わったこと

Hugo のテンプレートシステムが、v0.146.0 から新しくなりました。(2025年4月11日より)
これにより、一部のフォルダ名が変更になったり、削除されたりしています。

テンプレートの layouts フォルダの構成が変わりました

layouts の新しいフォルダ構成は以下の通り

layouts ├─ baseof.html ├─ home.html ├─ page.html ├─ section.html ├─ taxonomy.html ├─ term.html ├─ _markup │ └─ render-link.html ├─ _partials │ ├─ head │ │ ├─ css.html │ │ └─ js.html │ └─ mypartial.html └─ _shortcodes └─ myshortcode.html

主に、レイアウトフォルダの構成が変わったことにより、以下の個所を修正しなくてはいけませんでした。

変更部分 必要な修正
_default削除 _default 内のファイルを layouts に移動
partials_partials に変更 フォルダ名を変更する
shortcodes_shortcodes に変更 フォルダ名を変更する
テンプレートから _internal という概念を削除 {{ partial "_internal/xxx.html"}} という表現を {{ partial "xxx.html" }} に置き換える
index.html削除 index.htmlhome.htmlに変更する

なお、他にも変更箇所はあります。
詳細は以下の公式サイトのドキュメントをご覧ください。

公式サイト

{{ .Summary }} の仕様変更 (プレーンテキスト→HTMLに変更)

レイアウトのフォルダ構成はひとまずクリアして、次に困ったのが {{ .Summary }} です。

キリンスキでは、ブログの記事一覧に「本文の一部」を自動で表示しています。これは、home.html のテンプレート内に {{ .Summary }} を追加することで表示しています。

この Summary というテンプレート用タグに仕様変更があったようで、これまでの設定では思った通りの取得ができなくなってしまいました。

これまでの設定 (config.toml または hugo.toml) は、以下の通り。

hasCJKLanguage = true -> 日本語対応の設定
summaryLength = 30    -> 表示する文字数(およそ) 

今までは上記の設定だけで本文の テキストのみ が表示されていたのですが、仕様変更によりHTMLを返すようになってしまったようです。

対策: {{ .Summary | plainify }} を使う

あれこれ変更して、現在は以下のテンプレートタグを使用しています。

{{ .Summary | strings.Truncate 35 | plainify }}
  • plainify : テキストのみを取得する
  • strings.Truncate 35 : 表示する文字数

この変更でうまく動いたので、アップデート前の設定で使用していた summaryLength = 30 は削除しました。

{{ .Summary }} は、<meta> タグ内の description などにも使用しているのでそこも忘れず変更しました。

ちなみにこの変更は2024年8月からだそうで…。
おそらくこれから困る人が出てくるに違いない。


しかし、前回も似たようなこと があったんですが、今回も…。
アップデート放置してるとこういうことが起きがちで反省。

これ書いてる間にもバージョンアップしてますからね。活発で何よりです…。


長くなっちゃったので、デザイン変更についてはまた別の記事にまとめようと思います。

  • X
  • Bluesky
  • Facebook
  • Hatena
  • line