最終変更日の手動設定
ox-hugo
を使った Hugo
への markdown 出力では、最終更新日( lastmod
)を設定できる。
さらに次のように設定すれば、ファイル保存時に自動的に最終更新日を設定できる。
(setq org-hugo-auto-set-lastmod t)
しばらくはこの設定でうまく運用できていたが、細かい修正等で、わざわざ更新日を更新する必要がないことも多いことがわかった。
そこで、この設定は nil
にして、代わりにプロパティに lastmod
を簡単に記録するための関数を準備した。
必要に応じて、編集中にこれを呼べば良い。
(defun my-ox-hugo-add-lastmod ()
"Add `lastmod' property with the current time."
(interactive)
(org-set-property "EXPORT_HUGO_LASTMOD"
(format-time-string "[%Y-%m-%d %a %H:%M]")))
初めて EXPORT_HUGO_LASTMOD
を追加すると、プロパティの中の最後に追加されるため、順番が気になるかもしれない。そんな人は、あらかじめ EXPORT_HUGO_LASTMOD
をプロパティに登録しておけばよい。値が空であれば、最終更新日は出力されない。
"EXPORT_HUGO_LASTMOD"
の事前登録は、 org-capture
のテンプレートに追加するだけで簡単にできる。
(defvar org-capture-blog-file
(concat org-directory "blog/entries/imadenale.org"))
(setq org-capture-templates
`(("b" "Create new post for imadenale blog" entry
(file+headline ,org-capture-blog-file ,(format-time-string "%Y"))
"** TODO \n:PROPERTIES:\n:EXPORT_FILE_NAME: %?\n:EXPORT_HUGO_TAGS: \n:EXPORT_HUGO_LASTMOD: \n:END:\n")
("B" "Create new post for imadenale blog (UUID)" entry
(file+headline ,org-capture-blog-file ,(format-time-string "%Y"))
"** TODO %?\n:PROPERTIES:\n:EXPORT_FILE_NAME: %(uuid-string)\n:EXPORT_HUGO_TAGS: \n:EXPORT_HUGO_LASTMOD: \n:END:\n")))
org-hugo-auto-set-lastmod
を有効にしている時のもう一つのデメリットは、複数の記事を含む orgfile で C-c C-e H A
を実行すると、すべての記事に最終更新日が付与される、或いは、日付が更新される点にある。