如何在不应用模板的情况下在文件中插入 $key$s?

How do I interpolate $key$s in a file without applying a template?

在 Jekyll 中可以有一个看起来像

的文件
---
title: Whatever
layout: null
---

<h1>{{ title }}</h1>

{{ title }}会被插值,但是layout: null意味着文件内容不会被任何类型的模板包裹。

Hakyll 中的等价物是什么?换句话说,如果我有一个像

这样的独立文件
<h1>$title$</h1>

我需要将什么样的块传递给 compile 才能插入 $title$ 值,没有 将页面内容包装在一些模板?

答案(感谢 #hakyll 频道中的 erasmas!)是使用

编译您的页面
getResourceBody >>= applyAsTemplate theContext

其中 theContextContext String 的实例,其中包含您想要的字段。

这是一个说明如何使用此编译器的玩具示例:

main :: IO ()
main = hakyll $ do
    match "index.html" $ do
        route idRoute
        compile $ getResourceBody >>= applyAsTemplate indexContext

indexContext :: Context String
indexContext = mconcat
    [ constField "title" "My Website"
    , defaultContext
    ]