【问题标题】:How to sort product tags based on another array in Shopify liquid如何根据 Shopify 液体中的另一个数组对产品标签进行排序
【发布时间】:2023-12-26 04:26:01
【问题描述】:

我有一个问题,我需要根据标签的第一部分按特定顺序显示标签。例如,我有一个潜在产品标签列表:

category_electronics
size_large 
color_black 
color_brown 
weight_10

并且我需要它们根据应用于标签第一部分(下划线之前)的预设顺序进行排序,例如:

size
color
weight
category

因此,对于上面的示例,我希望得到的列表排序如下:

size_large
color_black
color_brown
weight_10
category_electronics

如果完整的标签名称都已知,这将很简单,因为我可以这样做:

{% assign tags = 'size_large,color_black,color_brown,weight_10,category_electronics' | split: ',' %}

{% for t in tags %}  
    {% assign tag = t | strip %}
    {% if product.tags contains tag %}
          <li>{{ tag }}</li>
      {% endif %}
    {% endfor %}
{% endif %}

然而,事实并非如此。标记中下划线后的值是可变的,任何单个产品的任何标记组(即上述尺寸)都可能多次出现。

看来我需要使用某种关联数组来实现这一点,但我无法完全理解如何做到这一点。

【问题讨论】:

    标签: arrays sorting shopify liquid


    【解决方案1】:

    以下应该有效:

    {%- assign tag_groups = "size,color,weight,category" | split: "," -%}
    
    {%- assign sorted_tags = "" -%}
    {%- for group in tag_groups -%}
      {% for tag in product.tags %}
        {%- assign tag_group = tag | split: "_" | first -%}
        {%- if tag_group == group -%}
          {%- assign sorted_tags = sorted_tags | append: tag | append: "," -%}
        {%- endif -%}
      {% endfor %}
    {%- endfor -%}
    {%- assign sorted_tags_arr = sorted_tags | remove_last: "," | split: "," -%}
    
    {%- for tag in sorted_tags_arr -%}
      {{- tag -}}<br>
    {%- endfor -%}
    

    【讨论】:

      最近更新 更多