このチュートリアルで説明されているようなことをしようとしています。つまり、Hakyll ブログにタグを追加しますが、タグごとにページを生成するのではなく、すべてのタグとその投稿を一覧表示する 1 つのページを作成します。したがって、タグ付けされた 、Post1
タグ付けされた、Tag1
およびPost2
タグ付けされた が与えられた場合、私は次のようになります。 Tag1, Tag2
Post3
Tag2
tags.html
Tag1:
- Post1
- Post2
Tag2:
- Post2
- Post3
しかし、私は Haskell の初心者であり、Hakyll のモナド コンテキストのすべてを完全には理解していません。これが私がこれまでに持っているものです:
create ["tags.html"] $ do
route idRoute
tags <- buildTags "posts/*" (fromCapture "tags.html")
compile $
makeItem ""
>>= applyTemplate tagListTemplate defaultContext
>>= applyTemplate defaultTemplate defaultContext
>>= relativizeUrls
>>= cleanIndexUrls
Tags
問題は、私のブログのコンテキストでは何が何なのかよくわからないことです。デバッグのためにそれらを印刷できないようです。( を追加してみましprint tags
たが、うまくいきません。) それで、これをどのように進めるかを考えるのに非常に苦労しています。
どんな助けでも大歓迎です。
更新:私はまだこれを理解することにあまり近づいていません。これが私が今試していることです:
create ["tags.html"] $ do
route idRoute
tags <- buildTags "posts/*" (fromCapture "tags.html#")
let tagList = tagsMap tags
compile $ do
makeItem ""
>>= applyTemplate tagListTemplate (defaultCtxWithTags tags)
一緒に:
-- Add tags to default context, for tag listing
defaultCtxWithTags :: Tags -> Context String
defaultCtxWithTags tags = listField "tags" defaultContext (return (tagsMap tags)) `mappend` defaultContext
これについての助けは大歓迎です。私はすべてのドキュメントを認識していますが、それを実際のコードに変換することはできないようです。