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

WoJ*_*WoJ 2 liquid jekyll

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

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

{% for t in page.tags %}
    {% for p in site.posts %}
        {% if t in p.tags %}
            {{ p.title }}
        {% endif %}
    {% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

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

(*)我提到了我想要实现的目标,以防有更直接的方法来做到这一点,但我仍然对一般问题感兴趣。

mar*_*nuy 6

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

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

{% if product.tags contains "outdoor" %}   
This product is great for
using outdoors! 
{% endif %}
Run Code Online (Sandbox Code Playgroud)

因此,要获取在其前端具有特定标签的帖子列表(在本例中为带有标签的帖子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 %}
Run Code Online (Sandbox Code Playgroud)