HugoのテーマPaperModで記事の最終更新日を表示する。

動作環境

  • Windows 11 / Git Bash
  • Hugo v0.164.0 / 標準ビルドでも動作可能
  • PaperMod v8.0 / 執筆時点の最新コミットを使用
$ hugo version
hugo v0.164.0-ce2470e7012b5ab5fc4e10ebe4027e9f8d9e00dc+extended windows/amd64 BuildDate=2026-07-06T16:39:30Z VendorInfo=gohugoio

$ cd themes/PaperMod && git log -1 --oneline
154d006 (HEAD -> master, origin/master, origin/HEAD) style(post-single): adjust padding for details summary element

導入手順

1. レイアウトを追加

themes/PaperMod/layouts/_partials/post_meta.html をコピーして layouts/_partials/post_meta.html を作成する。

2. 最終更新日のテンプレートを追加

作成したレイアウトに以下のように最終更新日のテンプレートを追加する。

{{- if not .Date.IsZero -}}
    {{- $scratch.Add "meta" (slice (printf "<span title='%s'>%s</span>" (.Date) (.Date | time.Format (default ":date_long" site.Params.DateFormat)))) }}
{{- end }}

{{- if not .Lastmod.IsZero -}}
    {{- $dateStr := .Date.Format "2006-01-02" -}}
    {{- $lastmodStr := .Lastmod.Format "2006-01-02" -}}
    
    {{- if ne $dateStr $lastmodStr -}}
        {{- $text := i18n "last_update" $ -}}
        {{- $scratch.Add "meta" (slice (printf "<span title='%s %s'>%s %s</span>" $text (.Lastmod) $text (.Lastmod | time.Format (default ":date_short" site.Params.DateFormat)))) }}
    {{- end }}
{{- end }}

最終更新日の表示仕様は以下の通り。

  • 公開日と最終更新日が同じ年月日の場合は非表示にする。
  • 表示言語に合わせてラベルテキストを自動で切り替える。
  • 各言語のラベルと年月日を組み合わせた短縮形式で表示する。

3. 言語のファイルを追加

このサイトでは日本語と英語を扱うので二つの言語ファイルを追加する。

i18n/en.yaml

- id: last_update
  translation: "Updated"

i18n/ja.yaml

- id: last_update
  translation: "更新"

4. 確認

hugo server で開発サーバーを立ち上げて確認する。

この記事のように表示されていればOK。