2015-08-15 2 views
3

Можно ли назвать конкретнымpage.variable в макет в Джекилле?Позвоните, чтобы уточнить переменную страницы в Jekyll

Я знаю, что можно использовать {{ page.title }} в макете для вызова страницы названия тока, но можно назвать названия другого страницы вместо этого.

например.

{{ pageX.title }} 

вернуть бы название от pageX.html

Я искал и не мог видеть решение, я просто хотел, чтобы увидеть, если кто-нибудь знает, если это вообще возможно.

ответ

3

Вы можете использовать индекс страницы в site.pages. Например: {{ site.pages[0].title }}

+0

Спасибо! это работает - не могли бы вы помочь в разработке «[0]»? Как этот номер присваивается странице и что-то, что можно изменить? – matthewelsom

2

Это зависит от того, как вы хотите выбрать конкретную страницу. Например, у меня есть категория страниц, называемая «единицами» (доступна под «site.categories.units»). Для каждой страницы «единицы» я определял YAML Variable «unit-id» уникальным (и понятным для человека) способом.

Представьте, что я хочу получить доступ к устройству с помощью «unit-id» «my-first-unit». Я могу получить доступ к содержанию этой страницы с помощью:

{{ site.categories.units | where: "unit-id","my-first-unit" }} 

Если вместо этого я хочу сделать более сложные вещи, и мне нужно, чтобы получить доступ к любой информации, хранящейся в преамбуле YAML (давайте назовем это «все-YAML переменной «) этой конкретной страницы, это немного сложнее:

{% assign this-unit = "my-first-unit" %} 
{% for unit in site.categories.units %}{% if unit.unit-id == this-unit %}{{ unit.whatever-YAML-variable }}{% break %}{% endif %}{% endfor %} 

Обратите внимание, что инструкции внутри цикла де сжимаются (без переносами), чтобы избежать появления многочисленных пустых строк в выходном HTML. Кроме того, я добавил инструкцию «break», чтобы сократить количество ресурсов процессора.

Также обратите внимание, что вы можете легко добавить несколько строк для контроля, если существует страница «my-first-unit», или даже разрешить конфликт в случае дубликатов.

Я признаю, что это довольно неуклюжий способ сделать это, но это первое решение. Я буду с нетерпением ждать любого другого более надежного предложения.

0

Предполагая, что ваши имена уникальны вы могли бы избежать цикла путем фильтрации всех страниц для слизняка:

{% assign mypage = site.documents | where: "slug", "my-page-slug" | first %} 
    {{mypage.title}} 

Если у вас есть страница под названием «pageX.md» ваш слизняк будет «pageX».