hakyll-3.2.0.3: A static website compiler library

Hakyll.Web.Template

Description

This module provides means for reading and applying Templates.

Templates are tools to convert data (pages) into a string. They are perfectly suited for laying out your site.

Let's look at an example template:

 <html>
     <head>
         <title>My crazy homepage - $title$</title>
     </head>
     <body>
         <div id="header">
             <h1>My crazy homepage - $title$</h1>
         </div>
         <div id="content">
             $body$
         </div>
         <div id="footer">
             By reading this you agree that I now own your soul
         </div>
     </body>
 </html>

We can use this template to render a Page which has a body and a $title$ metadata field.

As you can see, the format is very simple -- $key$ is used to render the $key$ field from the page, everything else is literally copied. If you want to literally insert "$key$" into your page (for example, when you're writing a Hakyll tutorial) you can use

 <p>
     A literal $$key$$.
 </p>

Because of it's simplicity, these templates can be used for more than HTML: you could make, for example, CSS or JS templates as well.

In addition to the native format, Hakyll also supports hamlet templates. For more information on hamlet templates, please refer to: http://hackage.haskell.org/package/hamlet.

Synopsis

Documentation

data Template Source

Datatype used for template substitutions.

applyTemplate :: Template -> Page String -> Page StringSource

Substitutes $identifiers in the given Template by values from the given Page. When a key is not found, it is left as it is. You can specify the characters used to replace escaped dollars ($$) here.

applySelf :: Page String -> Page StringSource

Apply a page as it's own template. This is often very useful to fill in certain keys like $root and $url.

templateCompiler :: Compiler Resource TemplateSource

Read a template. If the extension of the file we're compiling is .hml or .hamlet, it will be considered as a Hamlet template, and parsed as such.