Не могу получить доступ к пользовательским переменным Front Matter - PullRequest
2 голосов
/ 22 октября 2019

Создаю свой первый сайт на Jekyll (использующий версию 4.0.0). Проблема в том, что переменные в Front Matter не распознаются.

HTML в _include (writing-post-featured-image.html)

<figure>
    <img class="feat-img" src="{{ site.baseurl }}/assets/images/{{ include.images }}" alt="{{ include.alt | default: 'lorem ipsum' }}" />
    <figcaption>{{ include.caption }}</figcaption>
</figure>

В _layout с макетом для текстовых постов (writings-post.html)

{% include writing-post-featured-image.html image=post.featured-image alt=post.featured-image-alt %}

Последнее, в файле .md (под _posts) следующий Front Matter

layout: writings-post
title: my title
permalink: /writings/:title
featured-image: photo.jpg
featured-image-alt: about photo
caption: photo caption

Вывод пуст

<figure>
    <img class="feat-img" src="" alt="lorem ipsum" />
    <figcaption></figcaption>
</figure>

Пожалуйста, помогите понять, почему так. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 23 октября 2019

Ваш синтаксис неправильный.

1.) Поскольку вы передаете переменные со своей страницы, ваш тег include должен выглядеть следующим образом:

 {% include writing-post-featured-image.html 
    image=page.featured-image 
    alt=page.featured-image-alt 
    caption=page.caption %}

2.) В вашем включении у вас есть синтаксическая проблема с include.images, которая должна быть include.image.

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

 {% include writing-post-featured-image.html %}

И ваш включаемый файл:

<figure>
    <img class="feat-img" 
         src="{{ site.baseurl }}/assets/images/{{ page.featured-image }}" 
         alt="{{ page.featured-image | default: 'lorem ipsum' }}" />
    <figcaption>{{ page.caption }}</figcaption>
</figure>
2 голосов
/ 23 октября 2019

Правильный синтаксис на странице поста:

{% include writing-post-featured-image.html image=page.featured-image alt=page.featured-image-alt %}

Обратите внимание на синтаксис page. вместо синтаксиса post.. Однако, когда у вас есть цикл в макете, вы можете использовать это:

{% for post in site.posts %}
  {% include writing-post-featured-image.html image=post.featured-image alt=post.featured-image-alt %}
{% endfor %}
...