我尝试在使用downcase
条件的同时在if
语句中使用contains
。我不敢相信没有适用于Google的解决方案。
这是我到目前为止尝试过的:
{% if collection.tags | downcase contains "womens" %}
{% if {{collection.tags | downcase}} contains "womens" %}
{% if {{collection.tags}} | downcase contains "womens" %}
我希望不必循环数组,如果可能的话,将缩进大小写的字符串分配回一个新数组中,只是为了保持干净和高效。
答案 0 :(得分:1)
您不能在Liquid的if
语句中操作值-您需要将小写的值分配给变量,然后使用它。
因此,在您的情况下,类似:
{% assign collection_tags = collection.tags | join: '~~~' | downcase | split: '~~~' %}
{% if collection_tags contains 'womens' %}
downcase
是字符串操作,而不是数组操作,因此上面的代码使用join
将数组变成带有某些定界符的单个长字符串,该定界符不应出现在您的任何标签中,然后在更改大小写后split
-使用相同的定界符将该字符串返回到数组中。
如果我们仅在数组本身上使用downcase
,Shopify将使用一个空字符串隐式加入数组,然后您的contains
语句将在数组中寻找子字符串womens
。导致斑点。相比之下,在数组上使用contains
时,Shopify将仅匹配与您的搜索词完全匹配的标签。
为说明一下,如果您的集合标签为['Not-For-Women','Stuff']
,downcase
-直接对数组进行排序将为您提供字符串'not-for-womenstuff'
,该字符串恰好包含子字符串'womens',并且意外的假阳性。