代码之家  ›  专栏  ›  技术社区  ›  Cory Dee

If语句,包含液体中的Contains和Downcase

  •  0
  • Cory Dee  · 技术社区  · 8 年前

    我想用 downcase 在一个 if 语句,同时使用 contains 标准。我不敢相信没有谷歌的解决方案。

    以下是我迄今为止所做的尝试:

    {% if collection.tags | downcase contains "womens" %}
    {% if {{collection.tags | downcase}} contains "womens" %}
    {% if {{collection.tags}} | downcase contains "womens" %}
    

    如果可能的话,我不需要循环数组并将下壳字符串重新分配到一个新数组中,只是为了保持干净和高效。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Dave B    8 年前

    不能在 if 在Liquid中的语句-您将需要为变量指定downcased值,然后使用它。

    所以在你的情况下,比如:

    {% assign collection_tags = collection.tags | join: '~~~' | downcase | split: '~~~' %}
    {% if collection_tags contains 'womens' %}
    

    注:

    downcase 是字符串操作,而不是数组操作,因此上面的代码使用 join 若要将数组转换为一个长字符串,其中包含一些不应出现在任何标记中的分隔符,则 split -在更改大小写后使用相同的分隔符将该字符串返回到数组中。

    如果我们只是利用 下壳 contains 语句将查找子字符串 womens 在生成的blob中。用于对比,使用时 包含 在数组中,Shopify只匹配与搜索词完全匹配的标记。

    举例来说,如果您的集合标记是 ['Not-For-Women','Stuff'] , -直接调用数组将得到字符串 'not-for-womenstuff'