hakyll-series: Adds series functionality to hakyll

[ library, mit, web ] [ Propose Tags ]

Module for adding series functionality to hakyll.

Example here.

In your posts, provide metadata at the top like so:

title: something
series: things

This will add the following fields to the post:

The name of the series
The total number of posts in the series
The position of the current post in the series
The URL of the series page

Using that, in your post template, something like this:

    <a href="$seriesUrl$">Part $seriesCurPos$ of a $seriesLength$-part series on $series$</a>

Will render like this:

Part 1 of a 5-part series on things

Linked to the aggregate page for the series, which would render something like this:

Part 1: something

To add it to your blog, add something like this to your main:

series <- buildSeries "posts/*" (fromCapture "series/*.html")

tagsRules series $ \(s:erie) pattrn -> do
    let title = toUpper s : erie
    route idRoute
    compile $ do
        posts <- chronological =<< loadAll pattrn
        let ctx = constField "title" title `mappend`
                  listField "posts" postCtx (pure posts) `mappend`

        makeItem ""
            >>= loadAndApplyTemplate "templates/series.html" ctx
            >>= loadAndApplyTemplate "templates/default.html" ctx
            >>= relativizeUrls

To have access to the series context in each post, change the post rule to something like this:

match "posts/*" $ do
    route $ setExtension "html"
    compile $ pandocCompiler
        >>= loadAndApplyTemplate "templates/post.html"    (postCtxWithSeries series)
        >>= loadAndApplyTemplate "templates/default.html" (postCtxWithSeries series)
        >>= relativizeUrls

Where postCtxWithSeries can be something like:

postCtxWithSeries :: Tags -> Context String
postCtxWithSeries series = seriesField series `mappend` postCtx

A minimal example is provided in this repo, on top of the default hakyll setup. (it also provides the templates)




Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS]
Dependencies base (>=4 && <5), containers (>=0.5), hakyll (>=4.8.0) [details]
License MIT
Copyright 2016 Donnacha Oisín Kidney
Author Donnacha Oisín Kidney
Maintainer mail@doisinkidney.com
Category Web
Home page https://github.com/oisdk/hakyll-series
Source repo head: git clone https://github.com/oisdk/hakyll-series
Uploaded by oisdk at 2016-11-02T21:53:12Z
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 855 total (4 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]