我试图在使用条件的同时使用语句downcase内部。我不敢相信没有一个谷歌支持的解决方案。ifcontains
这是我到目前为止所尝试过的:
{% if collection.tags | downcase contains "womens" %}
{% if {{collection.tags | downcase}} contains "womens" %}
{% if {{collection.tags}} | downcase contains "womens" %}
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我不想循环数组并将小写字符串分配回新数组,只是为了保持干净和高效。
Dav*_*e B 13
您无法if在 Liquid 中操作语句内部的值 - 您需要将小写的值分配给变量,然后使用它。
所以就你的情况而言,类似:
{% assign collection_tags = collection.tags | join: '~~~' | downcase | split: '~~~' %}
{% if collection_tags contains 'womens' %}
Run Code Online (Sandbox Code Playgroud)
downcase是字符串操作,而不是数组操作,因此上面的代码用于join将数组转换为单个长字符串,并带有一些不应出现在任何标签中的分隔符,然后split使用相同的方法将该字符串重新转换为数组更改大小写后的分隔符。
downcase如果我们仅在数组本身上使用,Shopify 将使用空字符串隐式连接数组,然后您的语句将在结果 blob 中contains查找子字符串。womens相比之下,当contains在数组上使用时,Shopify 将仅匹配与您的搜索词完全匹配的标签。
为了说明这一点,如果您的集合标签是['Not-For-Women','Stuff'],downcase直接对数组进行 -ing 将会得到字符串'not-for-womenstuff',该字符串恰好包含子字符串“womens”,并且会出现意外的误报。