我有一系列包含食谱的嵌套部分,按菜肴类型分组,例如:
\ncontent\n\xe2\x94\x94\xe2\x94\x80 recipes\n \xc2\xa0 \xe2\x94\x9c\xe2\x94\x80 _index.md\n \xc2\xa0 \xe2\x94\x9c\xe2\x94\x80 bread\n \xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0\xe2\x94\x9c\xe2\x94\x80 _index.md\n \xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0\xe2\x94\x9c\xe2\x94\x80 beer_rolls.md\n \xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0\xe2\x94\x9c\xe2\x94\x80 ciabatta.md\n \xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0\xe2\x94\x94\xe2\x94\x80 potato_bread.md\n \xe2\x94\x9c\xe2\x94\x80 dessert\n \xc2\xa0 \xe2\x94\x82\xc2\xa0\xc2\xa0\xe2\x94\x9c\xe2\x94\x80 _index.md\n \xe2\x94\x82\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80 chocolate_brownies.md\n \xe2\x94\x82\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80 elderberry_pie.md\n \xe2\x94\x82\xc2\xa0 \xe2\x94\x94\xe2\x94\x80 victoria_sponge_cake.md\n \xe2\x94\x94\xe2\x94\x80 mains\n \xe2\x94\x9c\xe2\x94\x80 _index.md\n \xe2\x94\x9c\xe2\x94\x80 bean_chilli.md\n \xe2\x94\x9c\xe2\x94\x80 braised_leeks.md\n \xe2\x94\x94\xe2\x94\x80 yorkshire_pudding.md\nRun Code Online (Sandbox Code Playgroud)\n我想编写一个list.htmlfor content/recipes/_index.md,以生成反映 中目录结构的嵌套列表recipes/,以便列表的第一级链接到小节,例如breador dessert,列表的第二级链接到各个食谱,例如bread/beer_rolls.mdor mains_bean_chilli.md。
其中包含什么list.html?我是否需要有多个list.html文件,每个嵌套小节一个?
在这个例子的帮助下,我构建了以下系统,它对我来说效果很好:
我在其中layouts/recipes/list.html包括了这个:
{{ if (eq .Title "Recipes") }}
<ul class="postlist">
{{ range .Sections.ByTitle }}
<li>
<a href="{{ .RelPermalink }}">{{ .Title }}</a>
{{ partial "recursive.html" . }}
</li>
{{ end }}
</ul>
{{ else }}
<ul class="postlist">
{{ range .RegularPages }}
<li>
<a href="{{ .RelPermalink }}">{{ .Title | markdownify }}</a>
</li>
{{ end }}
</ul>
{{ end }}
Run Code Online (Sandbox Code Playgroud)
我在其中layouts/partials/recursive.html包括了这个:
{{ $child_pages := union .Sections .Pages }}
<ul>
{{ range $child_pages.ByTitle }}
<li>
<a href="{{ .RelPermalink }}"> {{ .Title }} </a>
{{ if or (.Sections) (.Pages) }}
{{ partial "recursive.html" . }}
{{ end }}
</li>
{{ end }}
</ul>
Run Code Online (Sandbox Code Playgroud)
content/recipes/_index.md看起来像这样:
---
title: "Recipes"
---
Run Code Online (Sandbox Code Playgroud)
例如content/recipes/drinks/_index.md看起来像这样:
---
title: "Drinks"
---
Run Code Online (Sandbox Code Playgroud)
这会生成一个./recipes包含分组列表的页面,其中第一级包含指向其他列表页面(例如./recipes/bread)的链接,这些页面本身包含指向该组中的菜谱的链接。所有食谱也列在其父组下方./recipes。