Generating sitemap in Emacs

使用Emacs导出博客时,可以导出Sitemap文件,可以很方便的生成最近的文章信息或者归档列表。通过配置Sitemap导出时的参数,定制化的生成不同形式的Sitemap文件。

:sitemap-filename

导出的文件名,默认为 sitemap.org ,对应导出 sitemap.html 文件。

:sitemap-title

标题,默认为文件名称。

:sitemap-format-entry

这个选项用于配置每个条目生成的格式,这个选项是一个函数,包含3个参数:文件或目录名、样式和当前项目。函数返回一个字符串,默认情况下生成每个文件的链接,使用文件标题作为链接描述。可以使用 org-publish-find-date, org-publish-find-title, org-publish-find-property 获取附加信息来定制生成的样式。

(defun +org-publish-org-sitemap-format-entry (entry style project)
  (cond ((not (directory-name-p entry))
         (format "%s - [[file:%s][%s]]"
                 (format-time-string "%Y-%m-%d" (org-publish-find-date entry project))
                 entry
                 (org-publish-find-title entry project)))
        ((eq style 'tree)
         ;; Return only last subdir.
         (file-name-nondirectory (directory-file-name entry)))
        (t entry)))

:sitemap-function

用于生成Sitemap文件的函数,默认情况下,生成指定标题的Sitemap文件,并把所有条目以list的方式添加到文件中。也可以将所有的list转换为subtree。

(defun +org-publish-org-sitemap (title list)
  "Sitemap generation function."
  (concat "#+TITLE: " title "\n"
          "#+OPTIONS: toc:nil\n\n"
          (org-list-to-subtree list)))

:sitemap-sort-files

默认设置为 alphabetically ,按字母排序;还可以设置为 chronologicallyanti-chronologically 按照日期或者日期逆序排序,日期通过 org-publish-find-date 获取。