にフィールドを追加したいと思いdefaultContext
ます。これにより、すべてのページで利用できるリンクのリストが作成されます。私はそれ自体を変更できるとは思わないのでdefaultContext
、 に を追加し、すべての参照をそれに置き換える関数を作成しlistField
ましdefaultContext
た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>