在Shopify Liquid中将字符串解析为令牌

Mou*_*inX 2 parsing tokenize liquid shopify

我在Shopify元字段中具有以下字符串(“ my_str”):

a:3,b:1,c:2,d:2,e:2,f:2
Run Code Online (Sandbox Code Playgroud)

键是产品型号ID(缩写为a,b,c ...),数字是数量。

我需要将其解析为key:value对,以便可以执行以下操作:

{% assign my_str = collection.metafields.local.my_metafield %}
{% assign my_map = my_str | parse ???? %}

{% for product in collection.products %}
    {% assign temp_qty = 1 %}
    {% for pair in my_map %}
        {% if pair[0] == product.variants.first.id %}
          {% assign temp_qty = pair[1] %}
        {% endif %}
    {% endfor %}
    <input type="hidden"  id="abc-{{ forloop.index0 }}" value=temp_qty />
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我绝对不知道如何解析my_str。我也乐意接受有关最佳总体方法的建议。

Ste*_*arp 5

在创建数组时,Liquid非常有限。常用的方法是使用split字符串过滤器

就您而言,它看起来像这样:

{% assign my_str = 'a:3,b:1,c:2,d:2,e:2,f:2' %}
{% assign my_arr = my_str | split: ',' %}

{% for pair_str in my_arr %}
  {% assign pair_arr = pair_str | split: ':' %}
  ID: {{ pair_arr[0] }} Qty: {{ pair_arr[1] }} <br />
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

这篇博客文章也是关于Liquid数组主题的有趣读物:Shopify的Liquid中的高级数组