如何检查列表中是否存在值?

时间:2017-05-23 16:23:54

标签: jekyll liquid

我想获得前面有特定标签的帖子列表(*)

我尝试了下面的代码,它迭代当前帖子页面的所有标签(当前标签为t),然后迭代所有帖子(p)以检查他们是否有这个标签(出于调试原因,只输出标题):

{% for t in page.tags %}
    {% for p in site.posts %}
        {% if t in p.tags %}
            {{ p.title }}
        {% endif %}
    {% endfor %}
{% endfor %}

{% if t in p.tags %}似乎失败了(我来自Python背景,所以我试了一下)我找不到in运算符。它会退出吗?

(*)我提到了我想要实现的目标,以防有更简单的方法,但我仍然对一般性问题感兴趣。

2 个答案:

答案 0 :(得分:3)

按照您的示例,可以使用contains标记完成:

  

contains还可以检查数组中是否存在字符串   字符串。

{% if product.tags contains "outdoor" %}   
This product is great for
using outdoors! 
{% endif %}

所以要获取在前面有特定标记的帖子列表(在这种情况下是标记为mytag的帖子):

{% assign posts_with_mytag =  site.posts | where_exp:"item",
"item.tags contains 'mytag'" %}

{% for post in posts_with_mytag %}
<a href="{{post.url}}">{{post.title}}</a>
{% endfor %}

答案 1 :(得分:0)

跟进@ maracuny的回答,我的问题中的更正代码是完整的:

{% for t in page.tags %}
    {% for p in site.posts %}
        {% if p.tags contains t %}
            {{ p.title }}
        {% endif %}
    {% endfor %}
{% endfor %}