Jekyll - Нет доступа к пользовательским переменным Front Matter

Я новичок в Jekyll и хотел бы создать дополнительные переменные в Post Frontmatter:

style:
  name: post
img: image_name

Когда я пытаюсь использовать такую ​​переменную, как title, она работает.

{% page.title %}

Но когда я пытаюсь использовать другую переменную

{% if page.img %}
  {{ page.img }}
{% else %}
  No image
{% endif %}

Это возвращает ноль. Даже когда вы просто пытаетесь вывести

{{ page.img }}

Есть идеи, почему я не могу использовать свои пользовательские переменные, определенные в предварительном письме?


person stefano_cdn    schedule 15.04.2016    source источник
comment
куда ты помещаешь код? в файле макета? включают? что такое весь главный раздел? есть репо, на которое стоит посмотреть?   -  person Ron    schedule 15.04.2016
comment
Я просто вставил ваш материал в тестовый пост, а затем ваш блок кода ниже, и он выдает image_name, как и ожидалось. У вас есть закрывающие 3 черточки на обложке? ваш код работает, я думаю, что-то не так, кроме самого кода.   -  person Ron    schedule 15.04.2016
comment
Можете ли вы предоставить URL-адрес репозитория? Это намного эффективнее для отладки.   -  person David Jacquel    schedule 16.04.2016


Ответы (2)


После некоторого исследования я обнаружил, что мои переменные YAML FrontMatter не читаются внутри файла макета, и нашел эту ссылку:

https://github.com/jekyll/jekyll/issues/4123

Итак, я изменил

{{ page.img }}

to:

{{ layout.img }}

и теперь это работает.

person stefano_cdn    schedule 17.04.2016

Вам следует использовать {{page.img}} вместо {% page.img%}. Проценты в {%%} обычно используются, когда вы делаете что-то, кроме простого вызова переменной - например, операторы if, операторы for, include и т. Д.

Я бы не подумал, что {% page.title%} будет работать сам по себе.

person Ron    schedule 15.04.2016
comment
Спасибо за ответ, к сожалению, {{page.img}} ничего не выводит. - person stefano_cdn; 15.04.2016