部分和内容的嵌套列表 - Hugo
Nested list of sections and content - Hugo
我有一系列包含食谱的嵌套部分,按菜肴类型分组,例如:
content
└─ recipes
├─ _index.md
├─ bread
│ ├─ _index.md
│ ├─ beer_rolls.md
│ ├─ ciabatta.md
│ └─ potato_bread.md
├─ dessert
│ ├─ _index.md
│ ├─ chocolate_brownies.md
│ ├─ elderberry_pie.md
│ └─ victoria_sponge_cake.md
└─ mains
├─ _index.md
├─ bean_chilli.md
├─ braised_leeks.md
└─ yorkshire_pudding.md
我想为 content/recipes/_index.md
编写一个 list.html
,以生成反映 recipes/
中目录结构的嵌套列表,这样列表的第一层链接到小节例如bread
或 dessert
,列表的第二层链接到各个食谱,例如bread/beer_rolls.md
或 mains_bean_chilli.md
.
list.html
包含什么?我是否需要多个 list.html
文件,每个嵌套小节一个?
在 this example 的帮助下,我构建了以下系统,对我来说效果很好:
在 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 }}
在 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>
content/recipes/_index.md
看起来像这样:
---
title: "Recipes"
---
例如 content/recipes/drinks/_index.md
看起来像这样:
---
title: "Drinks"
---
这会在 ./recipes
生成一个页面,其中包含一个分组列表,其中第一级包含指向更多列表页面的链接(例如 ./recipes/bread
),这些页面本身包含指向该组中食谱的链接. ./recipes
.
上的所有食谱也列在其父组下方
我有一系列包含食谱的嵌套部分,按菜肴类型分组,例如:
content
└─ recipes
├─ _index.md
├─ bread
│ ├─ _index.md
│ ├─ beer_rolls.md
│ ├─ ciabatta.md
│ └─ potato_bread.md
├─ dessert
│ ├─ _index.md
│ ├─ chocolate_brownies.md
│ ├─ elderberry_pie.md
│ └─ victoria_sponge_cake.md
└─ mains
├─ _index.md
├─ bean_chilli.md
├─ braised_leeks.md
└─ yorkshire_pudding.md
我想为 content/recipes/_index.md
编写一个 list.html
,以生成反映 recipes/
中目录结构的嵌套列表,这样列表的第一层链接到小节例如bread
或 dessert
,列表的第二层链接到各个食谱,例如bread/beer_rolls.md
或 mains_bean_chilli.md
.
list.html
包含什么?我是否需要多个 list.html
文件,每个嵌套小节一个?
在 this example 的帮助下,我构建了以下系统,对我来说效果很好:
在 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 }}
在 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>
content/recipes/_index.md
看起来像这样:
---
title: "Recipes"
---
例如 content/recipes/drinks/_index.md
看起来像这样:
---
title: "Drinks"
---
这会在 ./recipes
生成一个页面,其中包含一个分组列表,其中第一级包含指向更多列表页面的链接(例如 ./recipes/bread
),这些页面本身包含指向该组中食谱的链接. ./recipes
.