部分和内容的嵌套列表 - Hugo

Joh*_*lee 5 hugo

我有一系列包含食谱的嵌套部分,按菜肴类型分组,例如:

\n
content\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\n
Run Code Online (Sandbox Code Playgroud)\n

我想编写一个list.htmlfor content/recipes/_index.md,以生成反映 中目录结构的嵌套列表recipes/,以便列表的第一级链接到小节,例如breador dessert,列表的第二级链接到各个食谱,例如bread/beer_rolls.mdor mains_bean_chilli.md

\n

其中包含什么list.html?我是否需要有多个list.html文件,每个嵌套小节一个?

\n

Joh*_*lee 5

在这个例子的帮助下,我构建了以下系统,它对我来说效果很好:

我在其中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