Liquid (Shopify) - строка добавления пуста - PullRequest
0 голосов
/ 09 апреля 2019

В 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/

not

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

Почему это работает, когда я просто использую {{current_filters}}, но не .. append: current_filters

1 Ответ

1 голос
/ 09 апреля 2019

Я думаю, что вы путаете базовый синтаксис жидкости.

{{ ... }} используются только для вывода данных / содержимого, но не для назначения.

Поэтому, когда вы говорите:

{{ 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: '+' }} и будете готовы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...