summaryrefslogtreecommitdiffstats
path: root/site/projects/org-blog.org
blob: f09d85e655cb179ab5b204149a48f0d761cd317f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#+TITLE: org-blog
#+LINK_UP: ../index.html
#+LINK_HOME: http://ryuslash.org
#+LINK: src    https://github.com/ryuslash/org-blog
#+LINK: tar_gz https://github.com/ryuslash/org-blog/tarball/master
#+LINK: zip    https://github.com/ryuslash/org-blog/zipball/master
#+STARTUP: showall

#+begin_html
  <script src="/keyjs.KS" type="text/javascript"></script>
  <script type="text/javascript">
    keyjs_initialize({ "u": [ "keyjs_goto", "../index.html" ],
                       "h": [ "keyjs_goto", "http://ryuslash.org" ] });
  </script>
#+end_html

#+INCLUDE: "dlmenu.inc"

* About

  ~org-blog~ is a blog exporter for ~org-mode~ written by David
  O'Toole in 2006. ~org-mode~ has since then changed a bit and it
  seemed that it no longer worked. It also seems to be the only
  viable/acceptable pure-org solution for me, so I'm trying to revive
  it.

** Features

   - Pure ~org-mode~, all you need is some setup and you can use it like
     any other exporting function.
   - Separate drafts from posts.
   - Generate an index of posts.
   - Rudimentary RSS support.

** Requirements

   - GNU Emacs
     - ~org-mode~

* Usage

** Setup

   Since I've adapted it to work as a normal publishing function for
   org, setting it up is a lot like any other publishing project:

   #+BEGIN_SRC emacs-lisp
     (setq org-publish-project-alist
         '(("my-blog"
            :base-directory "~/location/to/org/files/"
            :publishing-directory "/place/to/export/to/"
            :base-extension "org"
            :publishing-function org-publish-org-to-blog
            :blog-title "some title"
            :blog-description "some description"
            :blog-export-rss t
            :index-title "oni blog"
            :recursive nil
            :table-of-contents nil)))
    #+END_SRC

   Most of these options are very normal project settings and can be
   read about in the documentation for the variable
   ~org-publish-project-alist~. The ~blog-title~, ~blog-description~,
   ~blog-export-rss~ and ~index-title~, however, are used by ~org-blog~.

   - ~blog-title~ :: This setting is used when exporting RSS. It sets the
                   ~title~ in the XML output.

   - ~blog-description~ :: This setting is also used when exporting
        RSS. It sets the ~description~ in the XML output.

   - ~blog-export-rss~ :: Whether or not you would like an RSS feed to be
        exported.

   - ~index-title~ :: This is used as the title of the blog's index page.

   Apart from these there are also 2 other settings that need your
   attention:

   #+BEGIN_SRC emacs-lisp
     (setq org-blog-directory "~/path/to/blog/org/files/")
     (setq org-blog-unfinished-directory "~/path/to/drafts/")
   #+END_SRC

   These don't have any relevance to the exporting and publishing
   functions, but they're used by the ~org-blog-new-post~ and
   ~org-blog-finish-post~ functions, which help with creating new posts.

** Create new post

   To create a new post, just call =M-x org-blog-new-post= and start
   writing.

** Finish a post

   When you're done writing and would like to set it up to be
   published, just call =M-x org-blog-finish-post=.

** Publish

   To publish just use any of the ~org-publish-*~ functions as you would
   any other org site.