这里的液体新手正在寻求帮助。我有两个集合,每个集合中有一个名称相似的产品:
(集合)小吃店>(产品)巧克力脆片
(集合)蛋白质棒>(产品)薄荷巧克力片
我试图根据收藏和产品句柄隐藏/显示特定于那些项目的内容(在同一页面内)。我已经尝试了以下操作,但是即使==应该是特定的,它也显示了这两个项目,但并没有显示,因为它认为巧克力片和胆汁片薄荷糖是匹配的,但不是:
{% if product.handle == "chocolate-chip" %} // do something {% endif %}
我已经尝试过了,但是不行:
{% if collection == "protein-bars" && product.handle == "mint-chocolate-chip" %} // do something {% endif %}
我也尝试过这种方法,但是不起作用:
{% if product.handle == "mint-chocolate-chip" | within: collections.protein-bars %} // do something {% endif %}
最终,我只想验证是否在产品页面上,我的逻辑会检查:
https://www.blakesseedbased.com/collections/snack-bars/products/chocolate-chip
https://www.blakesseedbased.com/collections/protein-bars/products/mint-chocolate-chip
您可以在薄荷巧克力片页面上看到逻辑认为“巧克力片”是产品匹配项,并且在薄荷巧克力片页面上显示巧克力片的信息(在产品下方的白色部分)显示)。
答案 0 :(得分:3)
在编写流动性陈述时要记住一些事情:
and
和or
进行比较。示例:{% if product.price > 1000 and product.price < 2000 %}
and
或 or
。if
(或unless
)语句中使用过滤器-您将要首先使用assign
创建一个变量,并首先应用所有过滤器,然后进行比较对此。==
,>
,<
和!=
之外,您还可以在语句中使用contains
。如果您在字符串上使用contains
,则将匹配一个子字符串;如果在数组上使用contains
,则将匹配数组中的确切值。 (注意:您不能在复杂对象数组(如变量数组)上使用contains
collection.handle
map
过滤器是一种将复杂对象数组简化为简单字段数组的便捷方法所以您可以做些什么:
{% assign product_collections = product.collections | map: 'handle' %}
{% if product_collections contains 'my-special-collection' and product.handle == 'my-special-handle' %}
<h2>Hi Mom!</h2>
{% endif %}