最終変更日の手動設定

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