首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >液体:我如何结合两个条件?

液体:我如何结合两个条件?
EN

Stack Overflow用户
提问于 2018-11-01 15:17:36
回答 1查看 1.9K关注 0票数 0

液体新手在这里找人帮忙。我在每个集合中有两个集合和一个产品,它们具有相似的名称:

(收藏)小吃店>(产品)巧克力片

(收集)蛋白质棒>(产品)薄荷巧克力芯片

我试图根据集合和产品句柄隐藏/显示特定于这些项目的内容(在同一页面中)。我试过以下几种方法,但这显示了这两种产品--尽管==应该是特定的,但它并不是,而且显示出来--因为它认为巧克力片和巧克力片薄荷是匹配的,但它不是:

代码语言:javascript
复制
{% if product.handle == "chocolate-chip" %} // do something {% endif %}

我试过了,但没办法:

代码语言:javascript
复制
{% if collection == "protein-bars" && product.handle == "mint-chocolate-chip" %} // do something {% endif %}

我也试过这种方法,但不起作用:

代码语言:javascript
复制
{% if product.handle == "mint-chocolate-chip" | within: collections.protein-bars %} // do something {% endif %}

最后,我只想验证一下,如果我在一个产品页面上,我的逻辑检查:

  1. URL中的产品句柄与薄荷巧克力芯片匹配。
  2. 这个项目是收藏的一部分:蛋白质棒(不是小吃店)

https://www.blakesseedbased.com/collections/snack-bars/products/chocolate-chip

https://www.blakesseedbased.com/collections/protein-bars/products/mint-chocolate-chip

你可以在薄荷巧克力芯片页面上看到逻辑相信“巧克力芯片”是一种产品匹配,并在薄荷巧克力芯片页面(在产品显示下的白色部分)上显示巧克力芯片的信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-01 19:09:37

在写你的液体陈述时,要记住一些事情:

  • 液体是冗长的-它使用字面单词andor进行比较。示例:{% if product.price > 1000 and product.price < 2000 %}
  • 条件词不能包含括号。或者至少,他们可以,但他们被忽视了。结果:最佳实践是只在任何单个语句中使用andor
  • 不能在if (或unless)语句中使用筛选器--首先要使用assign创建变量,首先应用所有筛选器,然后对其进行比较。
  • 除了==><!=之外,您还可以在语句中使用contains。如果在字符串上使用contains,则将匹配一个子字符串;如果在数组上使用contains,则将匹配数组中的确切值。(注意:不能对复杂对象数组(如变体数组)使用contains )
  • 集合是对象,因此它永远不能等于字符串。应该根据某些属性(如collection.handle )测试集合。
  • map过滤器是一种方便的方法,可以将复杂对象数组简化为简单字段数组。

所以你可以做点什么:

代码语言:javascript
复制
{% 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 %}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53104158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档