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