Middlemanで更新日付を表示する方法

middleman

Middlemanでブログを書いていて、ふと思ったのですが、記事の作成日は表示しているのですが、更新日は表示されていないんですよね。これじゃ、せっかく過去の記事を修正しても、読者に古い記事だと思われて記事の信用度が落ちてしまいますよね。

更新日付というのはこういうやつです。

middleman 更新日付

手順

WordPressのサイトだと普通にあるんですが、Middlemanはデフォルトだと更新日付までは表示しないことが多いと思います。

なので、あまりネット上に手順などもないのですが、意外と簡単にできました。

下のGemを利用します。

https://github.com/AndrewKvalheim/middleman-vcs-time

Gemfileに以下を追記し、bundle installを実行。

1
gem 'middleman-vcs-time'

config.rbに以下を追記。

1
activate :vcs_time

すると、コード内で以下が使えるようになります。

1
current_page.mtime # => 2014-01-20 17:31:50 -0800

自分は、viewでは下のように書いています。

1
2
3
4
- if (article.mtime.to_date - article.date.to_date).to_i > 7
  span.article__info_item
    i.fa.fa-repeat
    = article.mtime.strftime("%Y/%m/%d")

記事投稿日と、更新日が7日以内であれば、特に表示する必要はないかな、と思い上のようなif文になっています。つまり、投稿直後は結構、誤字とかで修正は頻繁にするので、それをいちいち更新日にしなくてもいいと思ったからです。

クルッと回っているようなアイコンはfontawsomeのfa-repeatを使っています。

日付はどうやって取得しているのか

このgemは、gitなどのバージョン管理システムから更新日付をとってきてくれるといます。最初は下の記事(英語)にあるような、ファイルのタイムスタンプを使用する手順を考えていましたが、gitの履歴にある日付のほうが正確だと思うので、こちらのgemを採用することにしました。

Show last modified date in Middleman

注意点

gitから更新日付をとってきているので、middleman buildする前に、commitをしておかないと、更新日付が更新されません。

このあたりは、ファイルのタイムスタンプのほうが楽そうですね。

とはいえ、gitと同じ日付の方が、更新履歴もおいやすいので、長期的に見れば楽だと思います。

羊毛や小麦