Adding a feed
- Magnus Therning
A blog isn’t complete without a feed, so that was the first thing to add. Luckily there’s a good tutorial on adding a feed in Hakyll. The following code snippets are basically just copied from that tutorial.
I’ve also decided to start publishing the result; it’s available on my github pages.
RSS or atom?
I decided to use atom since it’s a standard. Yeah, not more to write about that I suppose.
Code changes
The first thing to do was to add a feed configuration. It’s a simple adaption on what’s found in the tutorial.
postFeedConfig :: FeedConfiguration
= FeedConfiguration
postFeedConfig = "Magnus web site"
{ feedTitle = "Random stuff"
, feedDescription = "Magnus Therning"
, feedAuthorName = "magnus@therning.org"
, feedAuthorEmail = "http://magthe.github.io"
, feedRoot }
Then the build logic has to be extended with a rule for making atom.xml
. This is also a straight forward adaptation of the information found in the tutorial.
"atom.xml"] $ do
create [
route idRoute$ do
compile <- fmap (take 50) . recentFirst =<< loadAllSnapshots "posts/*" "posts-content"
posts let feedCtx = baseCtx <> bodyField "description"
renderAtom postFeedConfig feedCtx posts
Once again the snapshot of the posts comes in handy. Since the old WordPress site limited the feed to the 50 latest posts I decided to do that in the new one too. Maybe it’s a bit excessive, 10-20 ought to be enough, but I’ll leave it for now. The feed-specific context is a little nice details, also from the tutorial. The feed builder requires the presence of a description
for each post, but to avoid having to remember to add one to all posts I just add a description
field containing the body
of the post.
The generated feed is available at ./atom.xml