最終変更日の手動設定

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 を実行すると、すべての記事に最終更新日が付与される、或いは、日付が更新される点にある。

amazon_banner_large
amazon_banner_small