If 语句包含 Liquid 和 Downcase
If Statement With Contains And Downcase In Liquid
我试图在 if
语句中使用 downcase
,同时使用 contains
条件。我不敢相信没有 Google 可行的解决方案。
这是我到目前为止尝试过的方法:
{% if collection.tags | downcase contains "womens" %}
{% if {{collection.tags | downcase}} contains "womens" %}
{% if {{collection.tags}} | downcase contains "womens" %}
如果可能的话,我不想循环数组并将小写的字符串分配回新数组,只是为了保持整洁和高效。
您不能在 Liquid 中的 if
语句内操作值 - 您需要将小写的值分配给一个变量,然后使用它。
所以在你的情况下,是这样的:
{% assign collection_tags = collection.tags | join: '~~~' | downcase | split: '~~~' %}
{% if collection_tags contains 'womens' %}
注:
downcase
是一个字符串操作,而不是数组操作,所以上面的代码使用 join
将数组变成一个长字符串,带有一些不应该出现在任何分隔符中的分隔符您的标签,然后 split
在更改大小写后使用相同的定界符将该字符串返回到数组中。
如果我们仅在数组本身上使用 downcase
,Shopify 将使用空字符串隐式连接数组,然后您的 contains
语句将查找子字符串 womens
在生成的 blob 中。相比之下,在数组上使用 contains
时,Shopify 只会匹配与您的搜索词完全匹配的标签。
为了说明,如果您的集合标签是 ['Not-For-Women','Stuff']
,直接 downcase
-ing 数组将为您提供字符串 'not-for-womenstuff'
,它恰好包含子字符串 'womens' 并且会是意想不到的假阳性。
我试图在 if
语句中使用 downcase
,同时使用 contains
条件。我不敢相信没有 Google 可行的解决方案。
这是我到目前为止尝试过的方法:
{% if collection.tags | downcase contains "womens" %}
{% if {{collection.tags | downcase}} contains "womens" %}
{% if {{collection.tags}} | downcase contains "womens" %}
如果可能的话,我不想循环数组并将小写的字符串分配回新数组,只是为了保持整洁和高效。
您不能在 Liquid 中的 if
语句内操作值 - 您需要将小写的值分配给一个变量,然后使用它。
所以在你的情况下,是这样的:
{% assign collection_tags = collection.tags | join: '~~~' | downcase | split: '~~~' %}
{% if collection_tags contains 'womens' %}
注:
downcase
是一个字符串操作,而不是数组操作,所以上面的代码使用 join
将数组变成一个长字符串,带有一些不应该出现在任何分隔符中的分隔符您的标签,然后 split
在更改大小写后使用相同的定界符将该字符串返回到数组中。
如果我们仅在数组本身上使用 downcase
,Shopify 将使用空字符串隐式连接数组,然后您的 contains
语句将查找子字符串 womens
在生成的 blob 中。相比之下,在数组上使用 contains
时,Shopify 只会匹配与您的搜索词完全匹配的标签。
为了说明,如果您的集合标签是 ['Not-For-Women','Stuff']
,直接 downcase
-ing 数组将为您提供字符串 'not-for-womenstuff'
,它恰好包含子字符串 'womens' 并且会是意想不到的假阳性。