コンテンツにスキップ
最終更新日: 2019年12月30日

git-revision-date-localizedプラグイン

timvink/mkdocs-git-revision-date-localized-plugin - GitHub
MkDocs plugin that enables displaying the date of the last git modification of a page. The plugin uses babel and timeago.js to provide different localized date formats. Initial fork from mkdocs-git-revision-date-plugin.

git-revision-date-localizedプラグインを使用すると、Git上で管理しているMarkdownファイルの更新日時をページ上に表示することができます。

git-revision-date-localizedプラグインは、git-revision-dateプラグインから派生したものです。

派生元との違いは、 2019-11-29 と表示されていたものが、設定の言語によって 英語であれば 28 November, 2019 、日本語であれば 2019年11月28日 といった様に、ローカライズされた表示になります。

インストール

下記のコマンドを実行します。

pip install mkdocs-git-revision-date-localized-plugin

続いて、mkdocs.ymlファイルに下記を追記します。

plugins:
  - search
  - git-revision-date-localized

プラグインをまだ1つも設定していない場合は、デフォルトでsearchプラグインが有効になっているため、searchプラグインも明示的に記載しておきます。

mkdocs-materialテーマを利用している場合は、mkdocs.ymlに追記すると、自動でページ下部に最終更新日が表示されるようになります。

Markdownファイル毎に表示を設定

Markdownファイル内に下記のように記入することで、最終更新日が表示されます。

{{ git_revision_date }} => {{ git_revision_date }}

ただし、この方法の場合、日付を表示したいファイル全てに設定が必要になります。

テンプレートファイルに埋め込む

Mkdocsのテンプレートファイルに下記のように記入することで、全てのページに最終更新日が表示されます。

{{ page.meta.revision_date }} => {{ git_revision_date }}

Materialテーマは、バージョン4.6.0でgit-revision-dateのサポートを追加したため、 始めからテンプレートファイルに最終更新日の表示が埋め込まれており、特に編集は必要ありません。

自身で埋め込む場合は、下記を開いて参考にしてください。

自身でテンプレートに埋め込む場合

テンプレートをカスタマイズする

このサイトの場合は、materialテーマを使用しているので、materialのテンプレートファイルを元にテンプレートを編集します。 pipでインストールしている場合は pip show mkdocs-material コマンドでインストール先を確認できます。

> pip show mkdocs-material
Name: mkdocs-material
Version: 4.4.3
Summary: A Material Design theme for MkDocs
Home-page: https://squidfunk.github.io/mkdocs-material/
Author: Martin Donath
Author-email: martin.donath@squidfunk.com
License: MIT
Location: c:\users\XXXX\appdata\local\packages\pythonsoftwarefoundation.python.3.7_qbz5n2kfra8p0\localcache\local-packages\python37\site-packages
Requires: mkdocs, mkdocs-minify-plugin, Pygments, pymdown-extensions
Required-by:

上記のフォルダから base.html ファイルをコピーしてきましたので、それを編集します。
今回は、メインコンテンツの上部に表示したかったので、下記のコードを {% block content %}の前に挿入しました。

base.html

<article class="md-content__inner md-typeset">
 {% if page and page.meta and page.meta.revision_date and not page.meta.is_index and not page.is_homepage %}
  <div class="git_revision_date">
  最終更新日: {{ page.meta.revision_date }}
  </div>
 {% endif %}
 {% block content %}

なお、git-revision-dateプラグインのREADMEでは、 {% if page.meta.revision_date } と書かれているのですが、 これだけだとビルドエラーが発生するため、  {% if page and page.meta and page.meta.revision_date ... としています。

特定のページで最終更新日を表示しない

トップページでは更新日時を表示したくない場合は、テンプレートのif文の部分を下記のようにすると、トップページでは表示されないようになります。

  {% if page and page.meta and not page.is_homepage and (     page.meta.git_revision_date_localized or     page.meta.revision_date   )}