仅当产品有故事时,才会创建过滤器项目显示的项目的过滤器列表

时间:2015-07-27 18:20:48

标签: filter jekyll liquid

我正在试图弄清楚如何创建一个过滤器列表,它从_products目录中抓取产品标题,只有当有一个带有产品标题的故事时,它才会在列表中显示标题。

我有一个包含11个项目的_products列表,我可以全部显示它们,但我想从筛选项列表中删除一个项目,如果它是标题!=一个元素在一个单独的故事列表的前面。目录

max

这样做只会显示具有匹配成功故事的项目,但如果有多个故事与同一产品相关,那么它将不止一次地显示该产品。

我已经过滤了,只是显示了我无法解决的问题。

谢谢!

1 个答案:

答案 0 :(得分:0)

我觉得您正在寻找contains过滤器。 直接来自Liquid for Designers wiki:

# array = 1,2,3
{% if array contains 2 %}
   array includes 2
{% endif %}

在你的情况下,我猜你想要:

{% assign product = site.products %}
{% assign successfulProducts = site.success-stories | map: 'product' %}
{% for product in site.products %}
  {% if successfulProducts contains product.title %}
    ... {{ product }} ...
  {% endif %}
{% endfor %}

我在第2行所做的全部内容是mapping success-storiessuccessfulProducts。基本上每个story元素都被其story.product属性替换。

然后我循环浏览所有像你这样的产品,并检查每个产品是否应该显示。但我并没有遍历所有故事 - 相反,我提出了一个简单的条件,检查successfulProducts是否包含产品标题,就像您指定的那样。