Как перебирать hugo-страницы по именам уценки

Я создаю простой блог Hugo, и у меня есть следующая конфигурация toml для страницы

+++
[publications]
links = ["2017/article1",
        "2017/article2"]
+++

И у меня эти файлы находятся в соответствующем разделе содержимого (content / Publications / 2017 / article1.md). Мне нужно перебрать их, загрузить каждую страницу и использовать некоторые из их .Params для создания партиала. Что-то вроде

 {{ range .Params.publications.links }}
 {{ do something with page parameters }}
 {{ end }}

Думаю, это базовый вопрос Хьюго, я просто не могу его понять.


person Lukáš Hejtmánek    schedule 16.04.2017    source источник


Ответы (1)


На самом деле для этого требуется довольно продвинутое использование шаблонов Hugo. Но ты можешь сделать это!

Во-первых, чтобы упростить себе задачу, добавьте расширение «.md» к страницам, к которым вы пытаетесь получить доступ. Вероятно, также неплохо добавить полный путь, чтобы Хьюго не получил неправильный файл, если вы добавляете файлы с тем же именем в другой каталог в будущем.

+++
[publications]
links = ["publications/2017/article1.md",
        "publications/2017/article2.md"]
+++

Затем вы можете использовать в своем шаблоне что-то вроде следующего.

{{ range .Params.publications.links }}
  {{ range where $.Site.Pages "URL" ($.RelRef .) }}
    The "{{ .Title }}" page has {{ .WordCount }} words.
  {{ end }}
{{ end }}

Здесь используется where функция для фильтрации массива всех страниц сайта по полю URL. Чтобы найти URL, он использует .RelRef переменную страницы с текстом ссылки.

Я думаю, что должен быть способ использовать функцию apply для этого без внутреннего оператора range, но я не мог заставить его работать.

person Jack Taylor    schedule 17.04.2017