JavaScriptを有効にしてください

HugoのDataを修正する

経緯

Hugoで記事を書く際に通常ならばHugoコマンドで.mdファイルを作成するのだろう。

しかし私の場合はObsidianでノートを書きそれをHugoで公開するというスタイルをとっている。

そのためHugo用のfront matterは手書きだったり、コピペだったりObsidianのテンプレート機能をりようしたりする。

しかし、data部分に関してうまくいかない。
実際に記事を公開したらdataが0001/1/1と表示されている。

front matterにはdata: 2020-12-29というふうに記述しているにもかかわらずにだ。

そこで確認作業を行った。

確認

Hugo/config/_default/config.toml ファイルを確認するが記述がなかった。
これはテーマファイルのzzoの初期設定のまま変更していないからだろう。

設定する

ということでConfigure Hugoを参考にconfig.tomlに追記する。

結果

しかし、そう簡単に問題は解決しなかった。
ほかに原因があるようだ。

dataの記述方法の問題か。

別の原因

そもそも、HugoコマンドでMarkDownファイルを生成していないからdataがなかったりするのかな?

という仮説から、Gitのコミット日時を参照する":git"を試してみることにした。

1
2
3
4
5
[frontmatter]
date = ["date", "publishDate"]
lastmod = ["lastmod", ":git"]
publishDate = ["publishDate", "date"]
expiryDate = ["expiryDate"]

本当はfront matterで指定したdataを公開日としたいので、“data"の優先順位はあげたままだ。

データフォーマットを設定

また使用しているHugo テーマのzzoの標準設定では日付表示フォーマットのみで時刻は表示されないので、ついでにフォーマットも変更した。

1
2
[single-dateformat]
other = "2006/1/2 15:04"
config.tomlenableGitInfo = trueにしておかないと機能しないので注意

結果2

これでやっと思い通りに日付が表示されるようになった。

原因としては、front matterのdataの記述方法かもしれない。

date: 2019-12-20T12:00:06+09:00という記述方法ならば問題なく表示されたからだ。

でも一発でこのタイムスタンプを挿入するのはめんどうだから、dataは記述せずにGitのコミット日時を参照するほうが楽かな。

記事をHugoコマンドから生成するなら自動で挿入されるからHugoコマンド派の人はそのままで。

解決?

ひとまず表示はされるようになった。

次は公開日と更新日を表示したい。
ということで、Hugo/layouts/partials/body/infos.htmlをみてみた。

{{ if ne (.Date.Format (i18n "summary-dateformat")) (.Lastmod.Format (i18n "summary-dateformat")) }}

って具合でHugo関数はよくわかっていないが、IF関数で更新日を表示する部分が挟まれていることはなんとなくわかった。

とりあえず消したら、表示された。

しかし、日時が希望するように取得できていない。

共有

目次