gpt4 book ai didi

haskell - Hakyll - 使用带有数据的 makeItem 在 HTML 中创建列表

转载 作者:行者123 更新时间:2023-12-01 13:50:36 24 4
gpt4 key购买 nike

我有一个类别列表。每个类别本身都有一个子类别列表:[(Category,[SubCategory])]。我想在单个页面中获得以下 HTML 输出:

<h2>Category 1</h2>

<ul>
<li>Subcategory 1</li>
<li>Subcategory 2</li>
</ul>

<h2>Category 2</h2>

<ul>
<li>Subcategory 1</li>
<li>Subcategory 2</li>
</ul>

我找不到执行此操作的好方法。我是否需要将 makeItem 应用于列表并执行类似

的操作
categoryList = [("Category 1",["Subcategory 1","Subcategory 2"])]

compile $ do
makeItem (map fst categoryList)
>>= loadAndApplyTemplate "templates/categories.html" defaultContext

如何在上下文中添加子类别以便它们在模板中可用?

也许我需要拆分两个创建步骤(类似于 mapM $ makeItem (map fst categoryList) >> loadAndApplyTemplate ".. contextWithCategories 然后以某种方式引用生成的数据在实际页面生成中)?

最佳答案

我自己解决了这个问题。 See this post for a detailed description .

这是实际执行此操作的代码:

create ["test.html"] $ do
route idRoute
compile $ do
let ctx =
listField "parents"
(
field "parent" (return . fst . itemBody) <>
listFieldWith "children"
(field "child" (return . itemBody))
(sequence . map makeItem . snd . itemBody)
)
(sequence [makeItem ("p1",["c1","c2"]),
makeItem ("p2",["p3","p4"])]) <>
defaultContext
makeItem ""
>>= loadAndApplyTemplate "templates/testing.html" ctx
>>= loadAndApplyTemplate "templates/default.html" defaultContext
>>= relativizeUrls

关于haskell - Hakyll - 使用带有数据的 makeItem 在 HTML 中创建列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32004077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com