Вложенный список разделов и содержимого — Hugo

#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
 

Я хочу написать list.html для content/recipes/_index.md , чтобы создать вложенный список , отражающий структуру каталогов , в recipes/ котором первый уровень списка ссылается на подраздел, например bread , или dessert , а второй уровень списка ссылается на отдельные рецепты, например bread/beer_rolls.md , или mains_bean_chilli.md .

Что list.html в нем содержится? Нужно ли мне иметь несколько list.html файлов, по одному для каждого вложенного подраздела?

Комментарии:

1. Шаблоны страниц списка Это хорошее описание того, как использовать шаблоны страниц списка. Это просто и ясно. В нем приведен пример кода. Если тебя прослушивают. Дай мне знать.

Ответ №1:

С помощью этого примера я построил следующую систему, которая хорошо работает для меня:

в 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 .