Условно добавьте data-атрибуты в Jekyll - PullRequest
0 голосов
/ 30 мая 2018

Моя основная статья о блогах YAML выглядит следующим образом:

   layout: post
   title:  'Crepes'
   permalink: /crepes/
   src: '/assets/images/crepes.jpg' 
   date:   2018-05-24 21:41:00
   origin: http//...
   ingredients: 
    - ingredient1: amount
    - ingredient2: amount 

Вот мой index.html для отображения записей:

<ul>
{% for post in site.posts %}

<li data-title='{{ post.title }}' data-origin="{{ post.origin }}"
    data-src="{{ post.src | prepend: relative_url}}" 
    data-content='{ "ingredients": {{ post.ingredients | jsonify }} }'>

    <a href="{{ site.baseurl }}{{ post.url }}">
        <img src="{{ post.src | prepend: relative_url }}" alt={{ post.title }}/>
    </a>

</li>
{% endfor %}
</ul>

Проблема заключается в: Предполагается, что некоторые сообщения не имеют исходного значения, например origin:.И я ищу способ добавить атрибут источника данных, только если это значение указано в YAML Front Matter.

Жидкость дает следующую опцию:

{% if condition %}
    <li>....</li>
{% endif %}

Есть ли способ использовать ее внутри тега html?В моем случае я ожидаю что-то вроде этого:

 {% for post in site.posts %}

 <li  
     {% if post.origin has value %}
         data-origin="{{ post.origin }}"
     {% endif %}">      
</li>
{% endfor %}

1 Ответ

0 голосов
/ 31 мая 2018

Здесь я вижу четыре случая:

  • post.origin отсутствует в переднем материале: post.origin == null
  • post.origin присутствует в переднем вопросе, но не установлено (post.origin:) => post.origin == null`
  • post.origin присутствует в начале, но имеет пустую строку (post.origin: "") => post.origin == ""
  • post.origin присутствует в исходном тексте и установлен в допустимую строку (post.origin: "toto") => post.origin == "toto"

Результаты соответствуют Правдивая и ложная документация по жидкости .

Оттуда, используя логические операторы жидкости , мы можем построить условие вроде:

<li
  {% if post.origin and post.origin != "" %}
     data-origin="{{ post.origin }}"{% endif %}>
</li>

Обратите внимание, что post.origin означает post.origin != null.

...