Module containing some specialized functions to deal with tags. This Module follows certain conventions. Stick with them.
More concrete: all functions in this module assume that the tags are
located in the tags
field, and separated by commas. An example file
foo.markdown
could look like:
--- author: Philip K. Dick title: Do androids dream of electric sheep? tags: future, science fiction, humanoid --- The novel is set in a post-apocalyptic near future, where the Earth and its populations have been damaged greatly by Nuclear...
All the following functions would work with such a format. In addition to tags, Hakyll also supports categories. The convention when using categories is to place pages in subdirectories.
An example, the page posts/coding/2010-01-28-hakyll-categories.markdown
Tags or categories are read using the readTagMap
and readCategoryMap
functions. Because categories are implemented using tags - categories can
be seen as tags, with the restriction that a page can only have one
category - all functions for tags also work with categories.
When reading a TagMap
(which is also used for category maps) using the
readTagMap
or readCategoryMap
function, you also have to give a unique
identifier to it. This identifier is simply for caching reasons, so Hakyll
can tell different maps apart; it has no other use.
- type TagMap = Map String [HakyllAction () Context]
- readTagMap :: String -> [FilePath] -> HakyllAction () TagMap
- readCategoryMap :: String -> [FilePath] -> HakyllAction () TagMap
- withTagMap :: HakyllAction () TagMap -> (String -> [HakyllAction () Context] -> Hakyll ()) -> Hakyll ()
- renderTagCloud :: (String -> String) -> Float -> Float -> HakyllAction TagMap String
- renderTagLinks :: (String -> String) -> HakyllAction Context Context
Documentation
type TagMap = Map String [HakyllAction () Context]Source
Type for a tag map.
This is a map associating tags or categories to the appropriate pages using that tag or category. In the case of categories, each path will only appear under one category - this is not the case with tags.
:: String | Unique identifier for the map. |
-> [FilePath] | Paths to get tags from. |
-> HakyllAction () TagMap |
Read a TagMap
, using the tags
metadata field.
:: String | Unique identifier for the map. |
-> [FilePath] | Paths to get tags from. |
-> HakyllAction () TagMap |
Read a TagMap
, using the subdirectories the pages are placed in.
withTagMap :: HakyllAction () TagMap -> (String -> [HakyllAction () Context] -> Hakyll ()) -> Hakyll ()Source
:: (String -> String) | Function to produce an url for a tag. |
-> Float | Smallest font size, in percent. |
-> Float | Biggest font size, in percent. |
-> HakyllAction TagMap String |
Render a tag cloud.
:: (String -> String) | Function to produce an url for a tag. |
-> HakyllAction Context Context |
Render all tags to links.
On your site, it is nice if you can display the tags on a page, but naturally, most people would expect these are clickable.
So, this function takes a function to produce an url for a given tag, and applies it on all tags.
Note that it is your own responsibility to ensure a page with such an url exists.