about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVincent Ambo <tazjin@gmail.com>2017-11-12T23·57+0100
committerVincent Ambo <tazjin@gmail.com>2017-11-12T23·57+0100
commit040c3487805be38e013934fddf17ec86b5bd7a89 (patch)
tree945d2862fba4bd5baa1e7158eae3d5d8816a538b
parentb4dad1526d7a68ca089a22bf01fffa65abc9c5d9 (diff)
feat(blog): Configure org-mode's HTML export to match blog theme
This gets elblog close, but not quite there, to my previous blog
theme.

Comparison screenshot: http://i.imgur.com/UK49Fhi.png
-rw-r--r--blog.css37
-rw-r--r--blog.el14
-rw-r--r--postamble.html9
3 files changed, 59 insertions, 1 deletions
diff --git a/blog.css b/blog.css
new file mode 100644
index 000000000000..842da656b36c
--- /dev/null
+++ b/blog.css
@@ -0,0 +1,37 @@
+<style type="text/css">
+body {
+    margin: 40px auto;
+    max-width: 650px;
+    line-height: 1.6;
+    font-size: 18px;
+    color: #383838;
+    padding: 0 10px
+}
+h1, h2, h3 {
+    line-height: 1.2
+}
+.footer {
+    text-align: right;
+}
+.lod {
+    text-align: center;
+}
+.unstyled-link {
+    color: inherit;
+    text-decoration: none;
+}
+.uncoloured-link {
+    color: inherit;
+}
+.date {
+    text-align: right;
+    font-style: italic;
+    float: right;
+}
+.inline {
+    display: inline;
+}
+.navigation {
+    text-align: center;
+}
+</style>
diff --git a/blog.el b/blog.el
index 20f141fe41a5..accfda07888d 100644
--- a/blog.el
+++ b/blog.el
@@ -20,6 +20,17 @@
   :group 'elblog
   :type 'string)
 
+;; org-mode settings need to be configured a certain way for elblog's HTML
+;; templating to work correctly.
+(defun configure-org-html-export ()
+  (setq org-html-postamble t)
+  (setq org-html-doctype "html5")
+  (setq org-html-head-include-scripts nil)
+  (setq org-html-style-default (f-read-text "blog.css"))
+  (setq org-html-preamble-format
+        '(("en" "<header><h1><a class=\"unstyled-link\" href=\"/\">Tazjin&#39;s blog</a></h1><hr></header>")))
+  (setq org-html-postamble-format `(("en" ,(f-read-text "postamble.html")))))
+
 ;; Article fetching & rendering functions
 
 (defun render-org-buffer (buffer &optional force)
@@ -46,7 +57,7 @@
 
 (defun render-article (article)
   "Renders an article, if it exists."
-  (let ((output-buffer (render-org-buffer (concat article ".org"))))
+  (let ((output-buffer (render-org-buffer (concat article ".org") t)))
     (if output-buffer `(200 . ,(get-buffer-string output-buffer))
       article-not-found)))
 
@@ -66,6 +77,7 @@
 
 (defun start-elblog ()
   (interactive)
+  (configure-org-html-export)
   (elnode-start 'elblog-handler
               :port elblog-port
               :host elblog-host))
diff --git a/postamble.html b/postamble.html
new file mode 100644
index 000000000000..16a26218a0c0
--- /dev/null
+++ b/postamble.html
@@ -0,0 +1,9 @@
+<hr>
+<footer><p class="footer">Served with <a class="uncoloured-link" href="https://github.com/tazjin/elblog">Emacs</a>.</p>
+  <p class="footer">
+    <a class="uncoloured-link" href="https://twitter.com/tazjin">Twitter</a>
+    |
+    <a class="uncoloured-link" href="mailto:blog@tazj.in">Mail</a>
+  </p>
+  <p class="lod">ಠ_ಠ</p>
+</footer>