在Shopify Liquid中将字符串解析为标记

时间:2014-11-29 03:10:09

标签: parsing shopify tokenize liquid

我在Shopify元数据域中有以下字符串(" my_str"):

a:3,b:1,c:2,d:2,e:2,f:2

密钥是产品变体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 %}

我绝对不知道如何解析my_str。我也对整体最佳方法提出建议。

1 个答案:

答案 0 :(得分:5)

在创建数组时,Liquid非常有限。常见的方法是使用split string filter

在你的情况下,它看起来像这样:

{% 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 %}

此博客文章也是有关液体阵列主题的有趣读物:Advanced Arrays in Shopify's Liquid