创建项目的筛选列表,其中只有在产品有故事时才会出现筛选项目
Create a filter list of items where a filter item appears only if there is a story for the product
我想弄清楚如何创建一个过滤器列表,它从 _products 目录中获取产品标题,并且仅当有包含产品标题的故事时才会在列表中显示标题。
我有一个包含 11 个项目的 _products 列表,我可以显示所有项目,但我想从过滤项目列表中删除一个项目,如果它是标题!= 故事列表前面的元素一个单独的目录。
{% assign product = site.products %}
{% for product in site.products %}
{% for success in site.success-stories %}
{% if product.title == success.product %}
<li><p class="filter label label-default" data-filter=".{{product.title | downcase}}">{{product.title}}</p></li>
{% endif %}
{% endfor %}
{% endfor %}
它的作用是仅显示具有匹配项 success-story 的项目,但如果有多个故事在其首页中包含相同的产品,它将多次显示该产品。
我已经过滤掉了,它只是显示我无法过滤的项目。
谢谢!
我感觉您正在寻找 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-stories
到 successfulProducts
。基本上每个 story
元素都被其 story.product
属性.
替换
然后我像你一样遍历所有产品,检查每一个是否应该显示。但我并没有遍历所有故事 - 相反,我提出了一个简单的条件来检查 successfulProducts
是否包含您指定的产品标题。
我想弄清楚如何创建一个过滤器列表,它从 _products 目录中获取产品标题,并且仅当有包含产品标题的故事时才会在列表中显示标题。
我有一个包含 11 个项目的 _products 列表,我可以显示所有项目,但我想从过滤项目列表中删除一个项目,如果它是标题!= 故事列表前面的元素一个单独的目录。
{% assign product = site.products %}
{% for product in site.products %}
{% for success in site.success-stories %}
{% if product.title == success.product %}
<li><p class="filter label label-default" data-filter=".{{product.title | downcase}}">{{product.title}}</p></li>
{% endif %}
{% endfor %}
{% endfor %}
它的作用是仅显示具有匹配项 success-story 的项目,但如果有多个故事在其首页中包含相同的产品,它将多次显示该产品。
我已经过滤掉了,它只是显示我无法过滤的项目。
谢谢!
我感觉您正在寻找 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-stories
到 successfulProducts
。基本上每个 story
元素都被其 story.product
属性.
然后我像你一样遍历所有产品,检查每一个是否应该显示。但我并没有遍历所有故事 - 相反,我提出了一个简单的条件来检查 successfulProducts
是否包含您指定的产品标题。