Hugoでブログ記事一覧ページ(ブログアーカイブページ)を作成する
以前、ブログメンタリングを受講していたときの課題でもあった「アーカイブページ」を作った時のメモです。 ようやく、ブログ記事一覧の機能を実装できました。
実装方法
Hugoでのアーカイブページの作り方を調べてみると、大きく分けて次の2つがありました。
- a) Taxonomyでコンテンツごとに年・月の情報を付加する
- /2020/, /2020-12/のように年ごと、月ごとのアーカイブページを自動生成できる
- b) Archive用のテンプレートと、Archiveページのコンテンツを作成する
a)の方式だと各コンテンツのFront Matterに情報を付加しないといけないため、まずは簡単にできそうなb)の方法で実装しました。
layouts/_default/archive.html
{{ define "main" }}
<article class="mx-4 sm:mx-12">
<section class="">
<div class="">
<h2 class="font-bold text-xl">Blog Archives</h2>
{{ $type := "blog" }}
{{ $isGroupKey := true}}
{{ range (.Site.RegularPages.GroupByDate "2006") }}
{{ $count := (len .Pages) }}
{{ if (gt .Key 2000) }}
{{ range (where .Pages "Type" $type) }}
{{ if $isGroupKey }}
<h1 class="font-bold mt-2">{{ .Date.Format "2006" }}年 ({{ $count }})</h1>
{{ $isGroupKey = false}}
{{ end }}
{{ end }}
{{ $isGroupKey = true}}
<ul class="">
{{ range (where .Pages "Type" $type) }}
<li>
<a class="" href="{{ .RelPermalink }}">
<span class="">{{ .Date.Format "01/02" }}</span> — {{ .Title }}
</a>
</li>
{{ end }}
</ul>
<br>
{{ end }}
{{ end }}
</div>
</section>
<section>
<div class="mt-8">
{{- partial "share.html" . -}}
</div>
</section>
</article>
{{ end }}content/blog/archives/index.md
---
title: "Blog Archive"
layout: archive
slug: archives
---
.Site.RegularPages.GroupByDate "2006"で年ごとにグルーピングされたリストを取得できます。
if (gt .Key 2000)としているのは、このcontent/blog/archives/index.md自体がアーカイブページへ表示されないようにするためです。
(index.mdではコンテンツの日付を指定していないため、0年として表示される)
参考ページ
-
Generating Archive Pages with Hugo - Thedro Neely
- 今回の実装例
-
Inconvenient Hugo Yearly/Monthly Archives - Melcher.dev
- Taxonomyでの実装例
合わせて読みたい
Links in this post
Blog Archive
2015-11-23
小さな習慣・アウトプット駆動生活〜ブログメンタリングのふりかえり〜
2019/12月〜2020/2月の期間で @kakakakakku さんのブログメンタリングを受けて、「ブログを毎週1記事必ず書く」という目標にチャレンジしました。結果としては、 @kakakakakku さんのサポートもあり3か月間毎週1記事以上書くことができ、目標を達成しました。
同じ期間でTableauの「DATA Saber認定制度」も同時並行で進めていたので、図らずとも「学んだことをブログに書く」という相乗効果を得ることができました。
「DATA Saber認定制度」のふりかえり
ブログメンタリングの志望動機、流れ、成果、学んだことをふりかえります。
目次 ブログメンタリングとは ブログメンタリングの志望動機 ブログメンタリングの流れ ブログメンタリングの成果 定量的評価 定性的評価 ブログメンタリングを通じて学んだこと 1. 平日記事を公開することの大切さ 2. Hugoテンプレートデザインの作り込みの甘さ 3. 書評記事の書き方 4. イベント参加レポートのタイトルやTwitterでの投稿内容 5. 結論「書ける」 まとめ
2020-03-31