Hugoで記事が一年以上過ぎた場合はnoticeを表示するようにした

 2019-11-12 |  2020-5-14 |  2 min read


この記事は、1年間更新されておりません。

TL;DR

以下の書き方で実装可(⚠️Bulmaでの実装)

1
2
3
4
5
6
{{ $year := (div (sub now.Unix .Lastmod.Unix) 31536000) }}
{{ if le 1 $year }}
<div class="notification is-warning">
    この記事は、掲載されてから {{ $year }} 年間修正されておりません。
</div>
{{ end }}
  • Hugo 公式の.Unixページを見よ

はじめに

唐突に、「記事が老朽化している表示」はほしいなと思い、色々と検索して実装ができた感じです。Goのテンプレートエンジンにだけ詳しくなっていく…

方法

一番上に書いてあるとおり、

1
2
3
4
5
6
7
<!-- 再掲 -->
{{ $year := (div (sub now.Unix .Lastmod.Unix) 31536000) }}
{{ if le 1 $year }}
<div class="notification is-warning">
    この記事は、掲載されてから {{ $year }} 年間修正されておりません。
</div>
{{ end }}

で実装できる。
実際の表示はこんな感じ 😗

display-warning

多分上記のコードを読んだらわかると思いますが、一応解説します。

1
{{ $year := (div (sub now.Unix .Lastmod.Unix) 31536000) }}

ここでは、

  1. 現在時刻の Unix 時刻と最終更新の Unix 時刻を取得して、引く
  2. 記事を更新してから何秒経過したのかがわかるので、31536000 秒(一年=365 日で計算)で割り、時刻を年単位変換します。
  3. $year 変数に代入

を行っています。

後は、1 年以上かどうかで if 文判定して表示している感じです。 Hugo の.Unixページに書いてあったのになぜもっと早く見ておけばよかった。公式ページでは 1 日を算出しています。

計算が面倒くさい人用に、早見表を参考に置いてます。

参考


このエントリーをはてなブックマークに追加

comments powered by Disqus

Tags

Hugo | 7 Setting | 5 git | 5 AWS | 5 VSCode | 4 JavaScript | 3 intellij | 3 ci | 3 css | 3 kaspersky | 2 技術書典7 | 2 SpringBoot | 2 poem | 2 Homebrew | 2 Extention | 2 日本語 | 2 iCloud | 2 書き方 | 2 markdown | 2 webpack | 2 積本処理 | 2 command | 2 Route53 | 2 windows | 2 Terminal | 2 keyboard | 2 github-actions | 2 Docker | 2 LT | 1 elixir | 1 React | 1 history | 1 diff | 1 go | 1 AR | 1 ThymeLeaf | 1 Tech | 1 yarn | 1 Box | 1 hhkb | 1 Cloud2.0 | 1 brunch | 1 gradle | 1 revealjs | 1 運用 | 1 DB | 1 Ubuntu | 1 MacBook | 1 console | 1 Game | 1




Archives

2020 (31)
2019 (22)
2017 (1)
2016 (3)