Hakyll模板中的标签列表字段

时间:2018-12-06 18:25:07

标签: haskell hakyll

因此,Hakyll已经有一个tagsField可用于添加到模板,但是它将整个标签列表预先格式化为HTML字符串。我可以写一个自定义的tagsField,但我想分开我的担忧:让Hakyll为每个页面建立一个标签列表,然后将其传递到{{1 }},以便我可以在其中使用listField块来引用它。

我对Hakyll还是很陌生,但总体上还是Haskell的新手,所以我不太清楚函数的类型。对此方向的任何帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

我刚刚意识到这是我自己的问题。哦,好了,这是我发现的答案,以防别人需要。

我还没有尝试过,但是改编自http://mattwetmore.me/posts/hakyll-list-metadata.html

listContextWith :: Context String -> String -> Context a
listContextWith ctx s = listField s ctx $ do
    identifier <- getUnderlying
    metadata <- getMetadata identifier
    let metas = maybe [] (map trim . splitAll ",") $ M.lookup s metadata
    return $ map (\x -> Item (fromFilePath x) x) metas

listContext :: String -> Context a
listContext = listContextWith defaultContext

-- and in main, in the match postsPattern part:
tagContext = listContext "tags" <> defaultContext

阅读整篇文章,尝试尝试。应该可以。