Я хочу отобразить все файлы уценки в каждой папке, кроме статической, на моей домашней странице веб-сайта, один из способов сделать это — использовать союз в Хьюго, но по мере увеличения количества папок я вижу, что повторяю союзы по всему place (код с объединением закомментирован, кстати, работает), поэтому я подумал, что лучше использовать слайс, но когда я пытаюсь использовать слайс, я получаю следующую ошибку:
не удалось отобразить страницы: не удалось отобразить «дом»: «(Путь к каталогу)\layouts\index.html:12:19»: не удалось выполнить шаблон в <.Pages>: не удается оценить поля Страницы в строке типа
структура каталогов
код для index.html
{{ define "main" }}
<ul class = "homepage-topic-sections-container">
{{$sectionNames := slice "posts" "problems" "tutorials"}}
{{range $index, $sectionName := $sectionNames}}
{{ range where .Pages "Section" $sectionName }}
{{/*
{{ range union (union
(where .Pages "Section" "posts")
(where .Pages "Section" "problems"))
(where .Pages "Section" "tutorials")
}}
*/}}
<li>
<section class = "homepage-topic-section">
<h1 class = "topic-heading"><a href = "{{.Permalink}}">{{.Title}} </a></h1>
<div>
{{ range .Pages }}
<h3><a href = "{{.Permalink}}">{{.Title}} · {{.Date.Format "January 2, 2006"}}</a></h3>
{{ end }}
</div>
</section>
</li>
{{end}}
{{end}}
</ul>
{{ end }}
🤔 А знаете ли вы, что...
Go используется для создания контейнеров Docker.
https://gohugo.io/templates/introduction/#the-dot:
Контекст (он же «точка»)
Наиболее легко упускаемая из виду концепция шаблонов Go заключается в том, что
{{ . }}
всегда относится к текущему контексту.
- На верхнем уровне вашего шаблона это будет набор данных, доступный для него.
- Однако внутри итерации он будет иметь значение текущего элемента в цикле; т. е.
{{ . }}
больше не будет относиться к данным, доступным для всей страницы.
В приведенном ниже коде точка в .Pages
имеет значение текущего элемента в первом range
действии. Тип этого значения — строка, и в нем нет поля Pages
. Вот почему это не удалось с execute of template failed at <.Pages>: can’t evaluate field Pages in type string
.
{{ define "main" }}
<ul class = "homepage-topic-sections-container">
{{$sectionNames := slice "posts" "problems" "tutorials"}}
{{range $index, $sectionName := $sectionNames}}
{{ range where .Pages "Section" $sectionName }}
^^^^^^
Одним из возможных решений является использование $.
для доступа к глобальному контексту: .Pages
==> $.Pages
.
Возможно, лучшим решением будет вместо этого перечислить разделы исключения. Тогда вам не нужно изменять код при добавлении дополнительных папок:
{{ define "main" }}
<ul class = "homepage-topic-sections-container">
{{ range where .Pages "Section" "! = " "static" }}
<li>