液体(Shopify)-附加字符串为空

时间:2019-04-09 08:46:58

标签: string append shopify liquid

在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时为什么起作用

1 个答案:

答案 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: '+' }},就可以了。