JekyllのRSSは全ての記事でpublishedupdatedが同じ日時になってしまっているので、 jekyll-last-modified-at を使ってみる。

現在、使用しているプラグインの各バージョンは下記のとおりです。

  • jekyll (4.1.1)
  • jekyll-feed (0.15.0)
  • jekyll-sitemap (1.4.0)
  • jekyll-last-modified-at (1.3.0)
  • jekyll-tagging (1.1.0)

RSSの<updated>タグ

このサイトのRSS (feed.xml)は jekyll-feed を使って生成していますが、記事を修正してもRSSの<updated>タグの内容が 変ることはありません。

<!-- /feed.xml -->
<published>2020-08-19T14:19:15+09:00</published>
<updated>2020-08-19T14:19:15+09:00</updated>

そこで、jekyll-feedのテンプレートを見てみると

<!-- jekyll-feed-0.15.0/lib/jekyll-feed/feed.xml -->
<published>{{ post.date | date_to_xmlschema }}</published>
<updated>{{ post.last_modified_at | default: post.date | date_to_xmlschema }}</updated>

となっており、post.last_modified_atが未定義の場合post.dateを 使うようになっているようです。

Sitemapの<lastmod>タグ

また、jekyll-sitemap を使って生成しているSitemap (sitemap.xml) でも、記事を修正してもSitemapの<lastmod>タグの内容が変らない状態はRSSと同じです。

<lastmod>タグのついては README に説明があり、jekyll-last-modified-atプラグインをインストールすれば 最終更新日が反映されるようです。

The tag in the sitemap.xml will reflect by priority:

  1. The modified date of the file as reported by the filesystem if you have jekyll-last-modified-at plugin installed (not compatible with GitHub Pages auto building)
  2. A personalised date if you add the variable last_modified_at: with a date in the Front Matter
  3. The creation date of your post (corresponding to the post.date variable)

出典: jekyll/jekyll-sitemap

jekyll-last-modified-at

このプラグインは、ソースファイルの最後のGitコミット日をチェックすることにより、 ページの最終変更日を決定します。Gitが利用できない場合は、ファイルmtimeが使用されます。

出典: gjtorikian/ jekyll-last-modified-at (Google Translateによる翻訳)

インストール

インストールはGemfile, _config.ymlを編集してbundleするだけです。

# Gemfile
group :jekyll_plugins do
  gem "jekyll-last-modified-at"
end
# _config.yml
plugins:
  - jekyll-last-modified-at

結果

jekyll-last-modified-atをインストールすることでlast_modified_atが定義され、 RSS, Sitemapともに最終更新日が反映されます。

<!-- /feed.xml -->
<published>2020-08-19T00:00:00+09:00</published>
<updated>2020-08-19T16:36:54+09:00</updated>

jekyll-taggingとbuildエラー

bundle exec jekyll build時に下記のようなエラーがでるようになってしまった。

Liquid Exception: No such file or directory - .../tag/some-tag.html does not exist! in /_layouts/default.html

このエラーについては、 jekyll-last-modified-at を使うようにした (@znz blog) の対策が有効でした。(先達に感謝 :pray:)