name: hakyll-series version: 0.1.0.1 synopsis: Adds series functionality to hakyll description: Module for adding series functionality to hakyll. . Example . . In your posts, provide metadata at the top like so: . > --- > title: something > series: things > --- . This will add the following fields to the post: . [@series@]: The name of the series [@seriesLength@]: The total number of posts in the series [@seriesCurPos@]: The position of the current post in the series [@seriesUrl@]: The URL of the series page . Using that, in your post template, something like this: . > > $if(series)$ > Part $seriesCurPos$ of a $seriesLength$-part series on $series$ > $endif$ . 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: . > Things > 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` > defaultContext > > 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) build-type: Simple cabal-version: >= 1.10 homepage: https://github.com/oisdk/hakyll-series license: MIT license-file: LICENSE author: Donnacha Oisín Kidney copyright: 2016 Donnacha Oisín Kidney maintainer: mail@doisinkidney.com category: Web library hs-source-dirs: src exposed-modules: Hakyll.Web.Series build-depends: base == 4.* , hakyll >= 4.8.0 , containers >= 0.5 default-language: Haskell2010 source-repository head type: git location: https://github.com/oisdk/hakyll-series