我想向 中添加一个字段defaultContext
,这将使所有页面都可以使用链接列表。因为我不认为我可以改变defaultContext
自己,所以我创建了一个函数,它添加一个listField
todefaultContext
并用它替换所有引用defaultContext
。虽然程序符合要求,但我的新程序listField
是空的。
这是我最近的尝试。
-- site.hs
match "index.html" $ do
route idRoute
compile $ do
links <- sortByTitle =<< loadAll "links/*"
let indexCtx =
listField "links" linkCtx (return links) `mappend`
constField "title" "Home" `mappend`
myCtx
getResourceBody
>>= applyAsTemplate indexCtx
>>= loadAndApplyTemplate "templates/default.html" indexCtx
>>= relativizeUrls
match "templates/*" $ compile templateBodyCompiler
myCtx =
listField "navItems" defaultContext (loadAll "nav/*") `mappend`
defaultContext
-- nav/item.markdown
---
title: nav item 1
---
-- templates/default.html
<ul>
$for(navItems)$
$title$
$endfor$
</ul>