如何在不应用模板的情况下在文件中插入 $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
其中 theContext
是 Context 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
]
在 Jekyll 中可以有一个看起来像
的文件---
title: Whatever
layout: null
---
<h1>{{ title }}</h1>
{{ title }}
会被插值,但是layout: null
意味着文件内容不会被任何类型的模板包裹。
Hakyll 中的等价物是什么?换句话说,如果我有一个像
这样的独立文件<h1>$title$</h1>
我需要将什么样的块传递给 compile
才能插入 $title$
值,没有 将页面内容包装在一些模板?
答案(感谢 #hakyll 频道中的 erasmas!)是使用
编译您的页面getResourceBody >>= applyAsTemplate theContext
其中 theContext
是 Context 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
]