在 Jekyll 中有条件地添加数据属性
Conditionally add data-attributes in Jekyll
我的博客文章的基本 YAML Front Matter 如下所示:
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:
。我正在寻找一种方法来添加 data-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 %}
这里我看到四种情况:
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"
结果符合Truthy and falsy Liquid documentation.
从那里,使用 logical liquid operators,我们可以建立一个条件,如:
<li
{% if post.origin and post.origin != "" %}
data-origin="{{ post.origin }}"{% endif %}>
</li>
注意post.origin
表示post.origin != null
。
我的博客文章的基本 YAML Front Matter 如下所示:
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:
。我正在寻找一种方法来添加 data-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 %}
这里我看到四种情况:
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"
结果符合Truthy and falsy Liquid documentation.
从那里,使用 logical liquid operators,我们可以建立一个条件,如:
<li
{% if post.origin and post.origin != "" %}
data-origin="{{ post.origin }}"{% endif %}>
</li>
注意post.origin
表示post.origin != null
。