我在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。我也对整体最佳方法提出建议。
答案 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