如何在我的安装中包含 post 个预告片?
How can I include post teasers in my installation?
我正在关注 the official instructions on the Hakyll site 以获取 post 预告片并在我的网站上 运行。不幸的是,我遇到了麻烦,说明也帮不上什么忙。
我收到此代码段中引用的 item
值的超出范围错误:
loadAndApplyTemplate
"template/postitem.html"
(teaserField "teaser" "content" <> defaultContext)
item
将其嵌入我的 site.hs
时。出于可重复性的考虑,也没有明确说明 <>
运算符的来源;这需要导入 Literate Haskell 的模块之一。
完全不清楚对 item
的引用从何而来,因为这是一个相当常见的词,即使使用 find
和 grep
我也必须筛选数千个结果在我的机器上。
我应该在此处声明或导入什么才能访问 item
?
教程页面不是完整的示例。 item
不是对某些函数的引用。它只是 Item
. Usually you'll get it from pandocCompiler
or one of the many other "compilers". In this example, loadAndApplyTemplate
的占位符名称,就像它的任何其他用法一样。唯一的区别是 $teaser$
将绑定到模板中的前导文本。
也就是说,这并不是一个很好的例子,因为您通常希望在列出多个帖子的页面上使用前导文本。这可能涉及使用 listField
来制作您将在模板中迭代的帖子集合。例如,这是我的索引页面的规则:
match "index.html" $ do
route idRoute
compile $ do
posts <- fmap (take indexRecentPostCount) . recentFirst =<< loadAllSnapshots postsPattern "postContent"
let indexCtx =
constField "title" "Home" <>
baseCtx
getResourceBody
>>= applyAsTemplate (listField "posts" (teaserField "teaser" "postContent" <> postCtx) (return posts) <> indexCtx)
>>= loadAndApplyDefaultTemplate indexCtx
>>= relativizeUrls
本例中的"item"就是getResourceBody
returns,即index.html
的正文。这会将 $posts$
绑定到帖子列表。忽略元数据,我的 index.html
只是:
$for(posts)$
$partial("templates/teaser.html")$
$endfor$
$teaser$
然后绑定在 template/teaser.html
模板中。
我正在关注 the official instructions on the Hakyll site 以获取 post 预告片并在我的网站上 运行。不幸的是,我遇到了麻烦,说明也帮不上什么忙。
我收到此代码段中引用的 item
值的超出范围错误:
loadAndApplyTemplate
"template/postitem.html"
(teaserField "teaser" "content" <> defaultContext)
item
将其嵌入我的 site.hs
时。出于可重复性的考虑,也没有明确说明 <>
运算符的来源;这需要导入 Literate Haskell 的模块之一。
完全不清楚对 item
的引用从何而来,因为这是一个相当常见的词,即使使用 find
和 grep
我也必须筛选数千个结果在我的机器上。
我应该在此处声明或导入什么才能访问 item
?
教程页面不是完整的示例。 item
不是对某些函数的引用。它只是 Item
. Usually you'll get it from pandocCompiler
or one of the many other "compilers". In this example, loadAndApplyTemplate
的占位符名称,就像它的任何其他用法一样。唯一的区别是 $teaser$
将绑定到模板中的前导文本。
也就是说,这并不是一个很好的例子,因为您通常希望在列出多个帖子的页面上使用前导文本。这可能涉及使用 listField
来制作您将在模板中迭代的帖子集合。例如,这是我的索引页面的规则:
match "index.html" $ do
route idRoute
compile $ do
posts <- fmap (take indexRecentPostCount) . recentFirst =<< loadAllSnapshots postsPattern "postContent"
let indexCtx =
constField "title" "Home" <>
baseCtx
getResourceBody
>>= applyAsTemplate (listField "posts" (teaserField "teaser" "postContent" <> postCtx) (return posts) <> indexCtx)
>>= loadAndApplyDefaultTemplate indexCtx
>>= relativizeUrls
本例中的"item"就是getResourceBody
returns,即index.html
的正文。这会将 $posts$
绑定到帖子列表。忽略元数据,我的 index.html
只是:
$for(posts)$
$partial("templates/teaser.html")$
$endfor$
$teaser$
然后绑定在 template/teaser.html
模板中。