KOTET'S
PERSONAL
BLOG

#hugo 古い記事に警告を表示する

#hugo #tech

このブログには2016年から書いている様々な記事を集めている。 なかには必要な前提知識が不足した状態で手探りのまま書いた記事や、 具合が悪くて精神状態が少しおかしい時に書いたものもある。 情報が古くなっていて役に立たない記事が気づかれずに紛れている可能性もある。

先日このブログのタグ機能を強化した結果、検索性が向上し古い記事にもたどり着きやすくなった。 古い記事は定期的に消したくなるようなものが多いが、 自分の基本的ポリシーとして記録は極力消さないようにしたい。 自分の心の平穏を保つために断り書きを置いておくことにした。

というわけでこれはQiitaで言う「この記事は最終更新日からn年以上が経過しています。」 をHugoで生成したサイトに付けたい人のための記事である。 「hugo 古い記事 警告」とかでググってもこういう情報は出てこなかった。 自分と同じググりセンスを持つ人がこの記事を読んで役立ててくれるとうれしい。

Hugoテンプレート

以下は1年以上前の記事でのみ有効化されるテンプレートである。 コードを直接埋め込むなり、partialテンプレートにするなりすればよい。

{{ if gt (now.AddDate -1 0 0) .Date }}
<!-- ここにHTMLを好きなように書く -->
{{ end }}

Hugoにおける日時の比較

最初は「現在の日付と投稿日を引き算して、その差が1年以上」というif文を書こうと思ったのだが、 どうも調べた限り日時を1年とか1日とかの絶対量に変換する方法はないようだ。

しかしAddDateという関数があった。 これは年月日を指定して与えられた日時から加算する関数である。 now.AddDate -1 0 0とすることで現在日時にマイナス1年を加算、 つまり1年引いているわけだ。 日時の大小比較はgtで問題なくできたので 「現在の日付から1年引いて、それが投稿日より大きい(新しい)か」 という条件文を書いた。

そういうわけで現在の日付(サイトを生成した日付)から1年以上前の記事には断り書きがつくようになった。 これで古い記事は削除を免れ、生き延びられるだろう。