Liquid (Shopify) - 追加字符串为空

Liquid (Shopify) - Append String is Empty

在 Shopify 中,我试图在我的 shopify 商店中构建一个当前标签的字符串。

如果我在页面上:

mysite.com/collections/all/tag1+tagC+tag4

我需要能够在没有 spaces 的情况下将当前标签作为一个完整的字符串获取:

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

首先,我如何获得加号后没有 space 的字符串?我试过使用 | strip 没有运气,也把我的代码放在 {%- -%}

其次,当我尝试将 current_filters 变量附加到另一个变量的末尾时,它是 blank/empty

{% assign current_collection = collection.handle %}
{% assign base_url = shop.url | append: '/collections/' | append: current_collection | append: '/' | append: current_filters %}

输出base_url只是returns

mysite.com/collections/all/

没有

mysite.com/collections/all/tag1+tagC+tag4

为什么我只使用 {{current_filters}} 而不是 .. append: current_filters

我认为您混淆了 liquid 的基本语法。

{{ ... }}只用于输出data/content,不用于赋值

所以当你说:

{{ current_filters | append: tag | handleize | append: '+' }} 
// Logic "" (empty value) "tag" (the tag) "+" (the string)

您输出 current_filters 的空值,但将 tag+ 的值添加到它。但最后你根本没有修改 current_filters 值。所以最后它仍然是一个空字符串。

对于 assigning/modifying 值,您始终使用 {% ... %},因此在您的情况下,您应该修改此代码:

{{ current_filters | append: tag | handleize | append: '+'}} 

给这个:

{% assign current_filters = current_filters  | append: tag | handleize | append: '+' %}

此外,您还有 join 过滤器,它会使上面的所有代码变得多余。

您只需拨打 {{ current_tags | join: '+' }} 就可以了。