(require 'package) (add-to-list 'package-archives '("gnu" . "https://elpa.gnu.org/packages/")) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) (package-initialize) (unless (package-installed-p 'use-package) (package-refresh-contents) (package-install 'use-package)) (eval-and-compile (setq use-package-always-ensure t use-package-expand-minimally t)) (use-package org :ensure org-plus-contrib) (use-package ox-rss :after org) (require 'org) (require 'ox-html) (defun my/org-publish-org-sitemap-format (entry style project) (cond ((not (directory-name-p entry)) (format "(%s) [[file:blog/%s][%s]]\n" (format-time-string "%Y-%m-%d" (org-publish-find-date entry project)) entry (org-publish-find-title entry project))))) (defun posts-rss-feed (title list) (concat "#+TITLE: " title "\n\n" (org-list-to-subtree list))) (defun format-posts-rss-feed-entry (entry _style project) (let* ( (title (org-publish-find-title entry project)) (link (concat (file-name-sans-extension entry) ".html")) (pubdate (format-time-string (car org-time-stamp-formats) (org-publish-find-date entry project)))) (message pubdate) (format "%s :properties: :rss_permalink: blog/%s :pubdate: %s :author: Jacob Janzen :end:\n" title link pubdate))) (defun publish-posts-rss-feed (plist filename dir) (if (equal "rss.org" (file-name-nondirectory filename)) (org-rss-publish-to-rss plist filename dir))) (setq org-publish-project-alist '( ("org-core" :base-directory "~/website/" :base-extension "org" :publishing-directory "~/public_html/" :recursive t :publishing-function org-html-publish-to-html :with-toc nil :headline-levels 4 :section-numbers nil :html-head "" :html-preamble "
" :html-postamble nil) ("org-static" :base-directory "~/website/" :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf" :publishing-directory "~/public_html" :recursive t :publishing-function org-publish-attachment) ("org-blog" :base-directory "~/blog/" :base-extension "org" :publishing-directory "~/public_html/blog" :recursive t :publishing-function org-html-publish-to-html :with-toc nil :with-properties t :with-date t :with-timestamps nil :headline-levels 4 :section-numbers nil :html-head "" :html-preamble "" :html-postamble nil :auto-sitemap t :sitemap-filename "index.org" :sitemap-format-entry my/org-publish-org-sitemap-format :sitemap-sort-files anti-chronologically :sitemap-title "Blog") ("org-rss" :publishing-directory "~/public_html" :base-directory "~/blog/" :base-extension "org" :exclude "index.org" :publishing-function publish-posts-rss-feed :rss-extension "xml" :html-link-home "https://jjanzen.ca" :html-link-use-abs-url t :html-link-org-files-as-html t :auto-sitemap t :sitemap-function posts-rss-feed :sitemap-title "Jacob Janzen's Blog" :sitemap-filename "rss.org" :sitemap-style list :sitemap-sort-files anti-chronologically :sitemap-format-entry format-posts-rss-feed-entry) ("org-config" :base-directory "~/.doom.d/" :base-extension "org" :html-head "" :html-preamble "" :html-postamble nil :publishing-directory "~/public_html" :publishing-function org-html-publish-to-html :headline-levels 4 :auto-preamble t) ("org" :components ("org-core" "org-static" "org-config" "org-blog" "org-rss")))) (org-publish-all t)