В Hugo, как я могу выбрать файл данных с помощью предварительной переменной?

Я хочу иметь возможность определить на своей странице переменную с названием 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)?


person metaphyze    schedule 01.07.2018    source источник


Ответы (1)


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

{{partial "book_page" (dict "DATA" .Site.Data.book1 "previous_page" .Params.previous_page "current_page" .Params.current_page "next_page" .Params.next_page "depth" "")}}

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


тип: BookLayout1

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

current_page: 1

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


person metaphyze    schedule 02.07.2018