В Hugo, как я могу выбрать файл данных, используя переднюю переменную? - PullRequest
0 голосов
/ 01 июля 2018

Я хочу иметь возможность определить переменную основного вопроса на моей странице с именем book:

book: book1

Где book1 будет файлом данных, подобным этому (book1.yml):

page_list:

  - cover
  - frontis
  - i
  - ii
  - 1
  - 2
  - 3
etc...

Будет несколько файлов данных, таких как: book2.yml, book3.yml и т. Д.

И затем в моем макете я хочу перебирать страницы, как это:

{{ range $page := .Site.Data.{{ .Params.book }}.page_list }}

     {{ $page }} 

{{ end }}

Этот синтаксис не работает. Есть ли способ использовать переднюю материальную переменную внутри другой переменной (в моем примере: .Site.Data.MY_FRONT_MATTER_VARIABLE.page_list)?

1 Ответ

0 голосов
/ 02 июля 2018

Я нашел одно возможное решение, используя партиалы. По сути, я перемещаю весь свой HTML-код в часть, называемую "book_page", и передаю данные следующим образом:

{{частичное "book_page" (dict "DATA" .Site.Data.book1 "предыдущая_страница" .Params.previous_page "current_page" .Params.current_page "next_page" .Params.next_page "глубина" "")}}}

Я использую словарь, потому что мне тоже нужно несколько других значений. Затем в общем HTML я могу получить доступ ко всем данным book1, используя .DATA.page_list, .DATA.title, .DATA.author, .DATA.side_links и т. Д. У меня есть этот код в одном файле .html, который является «макетом» "(Хьюго называет их" типами ") для страниц моей книги, например 1.md:


тип: BookLayout1

предыдущая_страница: xiv

текущая страница: 1

следующая_страница: 2


...