Blogging
Table of Contents
1. RSS Feed Generation
Weblorg comes with builtin support for RSS feed. If you are using
the default theme, enabling this feature should be easy. Just
create a route on your publish.el
file as follows:
(weblorg-route :name "feed" :input-pattern "posts/*.org" :input-aggregate #'weblorg-input-aggregate-all-desc :template "feed.xml" :output "output/feed.xml" :url "/feed.xml")
You can optionally set the site_keywords
template variable:
(weblorg-site :template-vars '(("site_keywords" . "kw1, kw2, kw3")))
If you are creating your own theme, besides creating the route, you
will need the feed.xml
as well. For that, you can use this
snippet:
<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"> <channel> <title>{{ site_name | default("Simple Blog") }}</title> <atom:link href="{{ url_for("feed") }}" rel="self" type="application/rss+xml" /> <link>{{ url_for("index") }}</link> <description><![CDATA[]]></description> <language>en</language> <pubDate>{{ posts | first | getattr("date") | strftime("%a, %d %b %Y %H:%M:%S %z") }}</pubDate> <lastBuildDate>{{ now() | strftime("%a, %d %b %Y %H:%M:%S %z") }}</lastBuildDate> <generator>{{ meta.generator }}</generator> <webMaster>{{ site_owner | default("web@master (Blog Author)") }}</webMaster> <image> <url>{{ url_for("index") }}media/img/8bitme.png</url> <title>Blog Author</title> <link>{{ url_for("index") }}</link> </image> {% for post in posts %} <item> <title>{{ post.title }}</title> <link>{{ url_for("posts", slug=post.slug) }}</link> <author>{{ post.author|default("author@mail.com (Blog Author)") }}</author> <guid isPermaLink="false">{{ url_for("posts", slug=post.slug) }}</guid> <pubDate>{{ post.date|strftime("%a, %d %b %Y %H:%M:%S %z") }}</pubDate> <description><![CDATA[{{ post.html|safe }}]]></description> </item> {% endfor %} </channel> </rss>