Liquid - 将数组转换为小写

Kev*_*mon 2 liquid shopify

我正在使用 Shopify 并希望挂钩客户标签,但它们区分大小写。所以{% if customer.tags contains "wholesale" %}不等于{% if customer.tags contains "Wholesale" %}。我的客户在应用标签时可能会或可能不会坚持一种情况,所以我想在将来防止这种情况发生。

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

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

{% assign newArray = customer.tags %}
{{ newArray }}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Jos*_*own 5

您可以使用过滤downcase来实现此目的:

{% assign contains_wholesale = false %} 

{% for tag in customer.tags %}
  {% assign lowercase_tag = tag | downcase %}
    {% if lowercase_tag == 'wholesale' %}
      {% assign contains_wholesale = true %}
    {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

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


sie*_*jck 5

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

例子:

  {% 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 %
Run Code Online (Sandbox Code Playgroud)

解释: