使用 Liquid 查找最后一个匹配的元素

FInd last matched element using Liquid

我正在为 Shopify 商店开发自定义解决方案,我的问题是我无法管理如何避免在 case 语句中最后一个匹配的标签之后添加“/”。

我尝试使用一些 if 语句和 forloop 过滤器但没有结果。
我想到的最后一件事是在循环中找到最后一个匹配的标签,这将帮助我们避免在最后一个元素之后使用“/”,但不幸的是我无法管理如何做到这一点。

预期结果: Wool/Nylon/Viscose

这是将分配给产品的所有标签与输出所需的标签列表(服装 materials)进行比较的代码部分。
考虑到产品有羊毛、尼龙、粘胶等标签,非material.

示例 1

实际和预期结果: 羊毛尼龙粘胶纤维

{% for tag in product.tags %}
{% case tag %}
    {% when 'Viscose' %}
    Viscose
    {% when 'Wool' %}
    Wool
    {% when 'Polyamide' %}
    Polyamide
    {% when 'Nylon' %}
    Nylon
    {% else %}
{% endcase %}
{% endfor %}

示例 2

Filter forloop.last 用于定义循环的最后一个元素,但问题是 material tags(Wool, Nylon, Viscose) 可以位于产品标签数组的中间.考虑到产品有 10 个标签,material 个标签分布在数组中,我们将看到下一个结果。

结果: ///Wool/Nylon////粘胶//

{% for tag in product.tags %}
    {% if forloop.last == true %}
        {% case tag %}
                {% when 'Viscose' %}
                Viscose
                {% when 'Wool' %}
                Wool
                {% when 'Nylon' %}
                Nylon
                {% else %}
        {% endcase %}
    {% else %}
        {% case tag %}
                {% when 'Viscose' %}
                Viscose
                {% when 'Wool' %}
                Wool
                {% when 'Nylon' %}
                Nylon
                {% else %}
        {% endcase %}
        /
    {% endif %}
{% endfor %}

如果您能指出我的错误并建议我如何实现解决方案,我将不胜感激。

您可以尝试以下方法:-

{% for tag in product.tags %}
{% case tag %}
    {% when 'Viscose' %}
     {{ 'Viscose' | append: '/' }}
    {% when 'Wool' %}
     {{ 'Wool' | append: '/' }}
    {% when 'Polyamide' %}
     {{ 'Polyamide' | append: '/' }}
    {% when 'Nylon' %}
     {{ 'Nylon' }}
    {% else %}
{% endcase %}
{% endfor %}

这应该有效:

{% capture tag_string %}{% endcapture %}
{% for tag in product.tags %}
  {% if tag == 'Viscose' %}{% capture tag_string %}{{ tag_string }}Viscose/{% endcapture %}
  {% elsif tag == 'Wool' %}{% capture tag_string %}{{ tag_string }}Wool/{% endcapture %}
  {% elsif tag == 'Polyamide' %}{% capture tag_string %}{{ tag_string }}Polyamide/{% endcapture %}
  {% elsif tag == 'Nylon' %}{% capture tag_string %}{{ tag_string }}Nylon/{% endcapture %}
  {% endif %}
{% endfor %}
{{ tag_string | split: "" | reverse | join: "" | remove_first: "/" | split: "" | reverse }}

有关字符串过滤器的更多信息:https://help.shopify.com/themes/liquid/filters/string-filters