[Hugo] Hugoplate テーマで月別アーカイブを作成する

Hitoshi Arakawa | 2024/05/13 Mon 04:02

Hugo では月別のアーカイブページが用意されていない。過去のページにアクセスするのが難しい。そのため、月別のアーカイブページを作ることにした。

アーカイブページはトップメニューからアクセスできるようにしたい。月ごとにグループ分けし、新しい記事から順に表示させるようにしたい。

環境:
・macOS Ventura 13.5(英語環境)
・Hugo v0.119.0
・Hugo テーマ:Hugoplate

(1)hugo.toml に以下を追加する。

[taxonomies]
  category = "categories"
  tag = "tags"
  archive = "archives"

tagscategories はデフォルトで有効になっているが、[taxonomies] の項目を追記した場合は、それらもきちんと書かなくてはいけないようだ。

(2)各記事の Front Matter は以下のように追加するようにする。

archives: ["2024/05"]

(3)[多言語サイトの場合] {プロジェクト名}/i18n/ja.yaml および en.yaml にそれぞれ以下を追記する。

- id: archives
  translation: アーカイブ
- id: archives
  translation: Archive

(4){プロジェクト名}/config/_default/ の menus.ja.toml および menus.en.toml にアーカイブページ用のメニューを作成する。(多言語サイトでない場合は menus.ja.toml のみ)

(5){プロジェクト名}/themes/hugoplate/layouts/_default/terms.html の最後の </div> </section> {{ end }} 直前に以下を追記する。

  <!-- 新しい月別にループする -->
  <div>
    <!-- 新しい月別にループする -->
    {{ $pages := .Data.Pages.ByTitle }}
    <!-- terms.htlm は他の taxonomies と共通なので、archives の場合だけ新しい月別順にする -->
    {{ if eq .Type "archives" }}
      {{ $pages = $pages.Reverse }}
    {{ end }}
    {{ range $pages }}
    <div class="月別のタイトル (例)2022/01">
      {{ $anchor := anchorize .Title }}

      <a href="{{ .Permalink | absURL }}">
        <strong>{{ .Title }}</strong>
      </a>
    </div>
    <ul>
      <!-- 月別内の記事一覧ループ -->
      {{ range .Data.Pages.ByDate.Reverse }}
      <li>
        <a href="{{ .Permalink }}">・{{ time.Format "2006/01/02" .PublishDate }} {{ .Title }}</a>
      </li>
      {{ end }}
    </ul>
    {{ end }}
  </div>

(4)なお、Front Matter に毎回手動で YYYY/MM を入力するのは大変だ。テンプレートファイルに以下を追記しておくことで、今後の新規投稿の際には自動入力できる。

archives = ["{{ dateFormat "2006/01" .Date }}"]

参考:
Hugoで月別アーカイブを作る | backport
https://backport.net/blog/2017/09/08/hugo_monthly_archives/

Hugo - Taxonomyを使ってアーカイブページを作る - すいはんぶろぐ.io
https://suihan74.github.io/posts/2020/01_20_00_hugo_taxonomies/

静的サイトジェネレータHugoを使ったサイト構築(アーカイブ編) · feedtailor Inc. スタッフブログ
https://staff.feedtailor.jp/2016/08/10/hugo_16/

[Hugo] 月別の記事一覧を表示する
https://note.dokeep.jp/post/hugo-archives/

Taxonomies | Hugo
https://gohugo.io/content-management/taxonomies/

Hugo で新規投稿|荒川仁志
https://note.com/hitoshiarakawa/n/nb866cdcedba8

バスカヴィル家の犬 【新訳版】 シャーロック・ホームズ・シリーズ (創元推理文庫) | アーサー・コナン・ドイル, 深町 眞理子 | 英米の小説・文芸 | Kindleストア | Amazon
https://amzn.to/4bsGeVU