在Shopify中,我试图在shopify商店中构建一串当前标签。
如果我在页面上:
mysite.com/collections/all/tag1+tagC+tag4
我需要能够将当前标签作为一个完整的字符串而没有空格:
tag1+tagC+tag4
我的代码当前如下:
{% if current_tags %}
{% assign current_filters = '' %}
{% for tag in current_tags %}
{% if forloop.last == false %}
{{ current_filters | append: tag | handleize | append: '+'}}
{% else %}
{{ current_filters | append: tag | handleize}}
{% endif%}
{% endfor %}
{% endif %}
如果我随后输出
{{current_filters}}
我明白了
tag1+ tagC+ tag4
首先,我该如何在没有加号的情况下获取此字符串?我尝试使用| strip
时没有运气,也将我的代码放在{%--%}
第二次,当我尝试将current_filters
变量附加到另一个变量的末尾时,它为空白/空
{% assign current_collection = collection.handle %}
{% assign base_url = shop.url | append: '/collections/' | append: current_collection | append: '/' | append: current_filters %}
输出base_url只会返回
mysite.com/collections/all/
不是
mysite.com/collections/all/tag1+tagC+tag4
为什么我仅使用{{current_filters}}
但不使用.. append: current_filters
时为什么起作用
答案 0 :(得分:1)
我认为您在混淆液体的基本语法。
{{ ... }}
仅用于输出数据/内容,而不用于分配。
所以当你说:
{{ current_filters | append: tag | handleize | append: '+' }}
// Logic "" (empty value) "tag" (the tag) "+" (the string)
您输出current_filters
的空值,但将tag
和+
的值添加到其中。但是最后,您根本没有修改current_filters值。因此,最后它仍然是一个空字符串。
要分配/修改值,请始终使用{% ... %}
,因此,在这种情况下,您应该修改以下代码:
{{ current_filters | append: tag | handleize | append: '+'}}
对此:
{% assign current_filters = current_filters | append: tag | handleize | append: '+' %}
此外,您还有join
过滤器,它将使上面的所有代码变得多余。
您可以致电{{ current_tags | join: '+' }}
,就可以了。