Shopify 液体-将数组转换为小写

Shopify 液体-将数组转换为小写,shopify,liquid,Shopify,Liquid,我使用的是Shopify,我想挂到客户标签上,但它们是区分大小写的。因此{%if customer.tags包含“批发”%}与{%if customer.tags包含“批发”%}不同。我的客户在应用标签时可能会坚持一种情况,也可能不会坚持一种情况,因此我希望在将来防止这种情况发生 我想获取一个数组customer.tags,并将所有值转换为小写。我正试图找出逻辑,但遇到了麻烦 我想将customer.tags放入一个不工作的新数组中 {% assign newArray = customer.t

我使用的是Shopify,我想挂到客户标签上,但它们是区分大小写的。因此
{%if customer.tags包含“批发”%}
{%if customer.tags包含“批发”%}
不同。我的客户在应用标签时可能会坚持一种情况,也可能不会坚持一种情况,因此我希望在将来防止这种情况发生

我想获取一个数组customer.tags,并将所有值转换为小写。我正试图找出逻辑,但遇到了麻烦

我想将customer.tags放入一个不工作的新数组中

{% assign newArray = customer.tags %}
{{ newArray }}
我做错了什么?

您可以使用以下方法:

{% assign contains_wholesale = false %} 

{% for tag in customer.tags %}
  {% assign lowercase_tag = tag | downcase %}
    {% if lowercase_tag == 'wholesale' %}
      {% assign contains_wholesale = true %}
    {% endif %}
{% endfor %}

注意:
downcase
仅适用于ASCII字符。如果您需要搜索带有重音字母或其他Unicode字符的字符串,那么这是不够的。

使用“contains”操作符时的另一个解决方案是跳过“w”


类似于{%if customer.tags包含“holesale”}的东西应该可以工作

如果您想将
customer.tags
保留为一个数组,这样您就可以在一个简单的
if
语句中继续使用
contains
(如您的示例)。您还可以将两个液体过滤器链接在一起,以将数组中的所有字符串都转换为小写

例如:

  {% assign lowercaseTags = customer.tags | join: ',' | downcase | split: ',' %}
  {% assign randomString = 'WholeSale' | downcase %}

  {% if lowerCaseTags contains randomString %}
    {% comment %}
    Will now match regardless of case sensitivity
    {% endcomment %}
  {% endif %
说明:

  • :将数组转换为一个字符串,用
  • :使整个字符串小写
  • :与join相反,根据join
    中使用的字符从字符串重新创建数组