最終更新日の表示
記事のヘッダーに最終更新日と更新履歴へのリンクを表示することを可能にした。
たとえば、この記事では、ヘッダーにこのように表示されている。
公開日:2015年11月12日 - 最終更新日:2015年11月17日
そのために、YAML フロントマターにこのように書いてある。
date: 2015-11-12 03:01:50 +0000
update: 2015-11-17 06:38:29 +0000
そして、レイアウトで公開日 page.date
と最終更新日 page.update
を取得して表示している。
公開日:{{ page.date | date: "%Y年%-m月%-d日" }}{% if page.update %} - <a href="{{ % site.repository }}/commits/master/{{ page.path }}">最終更新日</a>:{{ page.update | date: "%Y年%-m月%-d日" }}{% endif %}<br />
YAML フロントマターに update:
がなければ、最終更新日は表示されない。最終更新日を表示したいときにだけ表示するようにした。
ここで、時刻を手入力するのは面倒なので自動的に挿入している。公開日の date:
は下書きを公開するスクリプトで挿入している。最終更新日の update:
については、YAML フロントマターに
update:
と書くことで、コミット時に自動的に更新時刻を挿入するようにした。そのために、How to show the modification date of a file in Jekyll? に書かれている krlmlr さんのpre-commit フック を書き直して使った。すなわち、.git/hooks/pre-commit
にこのスクリプトを置いた。
#!/bin/sh
# Contents of .git/hooks/pre-commit
# Read YAML front matter in all the modified files for committing,
# and replace "update:" line to "update: current date and time"
git diff --cached --name-status | grep "^M" | while read a b; do
cat $b | sed "/---.*/,/---.*/s/^update:.*$/update: $(date -u "+%Y-%m-%d %T") +0000/" > tmp
mv tmp $b
git add $b
done
このスクリプトは、git diff --cached --name-status
で更新のあったファイルを調べて、更新のあったファイルの YAML フロントマターの中で、update:
で始まる行に対して、現在時刻を追加する。