Hugo で生成したブログに「この記事を読むのにかかる時間」を追加する

2021-01-25
 hugo開発 この雑記は約1分47秒で読めます
この雑記は約1分47秒で読めます

よくブログサイトなんかで「この記事を読むのにかかる時間」が表示されてたりするじゃないですか。

WordPress だと Reading Time WP というプラグインがあるのですが、
これと同じものを hugo で探してみたところ、
ページ生成時に計算して埋め込んでしまう方法が記事になっていたのでやってみました。

対象記事の文字数をカウントして、220文字を読むのに1分かかるとして計算するわけですね。
実際に実装してみたコードがこちら。

{{/* 読むのにかかる時間を割り出して */}}
{{ $readTime := mul (div (countwords .Content) 220.0) 60 }}

{{/* 分と秒に分解して */}}
{{ $minutes := math.Floor (div $readTime 60) }}
{{ $seconds := mod $readTime 60 }}

{{/* 0分や0秒だったら表示しないようにする */}}
この雑記は約
{{- if gt $minutes 0 -}}{{ $minutes }}{{- end -}}
{{- if gt $seconds 0 -}}{{ $seconds }}{{- end -}}
で読めます

そして実際に表示してみたのがこんな感じ。

画像1

いい感じにできあがりました。

参考にしたサイト

comments powered by Disqus