Как заказать контент по FilePath в Hugo? - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь упорядочить контент на основе FilePath.Я хочу, чтобы FilePath имел приоритет над заголовком ссылки.Я создаю сайт документации с учебными пособиями, которые будут иметь последовательный контент.Мне бы хотелось, чтобы структура файла соответствовала последовательности учебника (например, 01_getting_started.md, 2_setup.md и т. Д.).Я бы предпочел полагаться на именование пути к файлу, а не определять информацию о последовательности дважды (в пути к файлу и в вопросе веса).

https://gohugo.io/templates/lists/#order-content

1 Ответ

0 голосов
/ 30 мая 2019

Обновление: @ Jura имеет еще более лаконичное решение:

{{ range sort site.RegularPages "File.Path" }}
  {{ . }}
{{ end }}

С учетом следующего содержания:

content/
├── 01_getting_started.md
├── 02_setup.md
└── 03_configuration.md

Тогда этот код шаблона:

{{ $pages := slice }}

{{ range site.RegularPages }}
  {{ $pages = $pages | append (dict "page" . "file_path" .File.Path) }}
{{ end }}

{{ range sort $pages "file_path" }}
  {{ .page }}
{{ end }}

Выводит страницы, упорядоченные по пути к файлу:

  Page(/01_getting_started.md)

  Page(/02_setup.md)

  Page(/03_configuration.md)

Работает, создавая пустой срез (он же массив). Он перебирает все страницы, добавляя словарь (или карту) объекта страницы и путь к файлу к срезу. Затем срез сортируется по пути к файлу в порядке возрастания и проходит через него.

Затем вы можете обращаться с .page как с обычным .. Так что .page.Title будет эквивалентно .Title.

...