遍历在 liquid 中附加 _indexNumber 的元字段,需要将其分配给对象值以匹配特定键
loop through metafields appending _indexNumber in liquid that need to be assigned to an object value to match to a specific key
我有一个动态数量的元字段进入 Shopify。我有一个特殊的元字段,它告诉我要查找多少个元字段文件,我用它来指定循环数量。
我需要遍历这些元字段并查找特定的匹配键。
numfiles
这里的变量来自那个元字段,它给我循环遍历的元字段文件总数。
我试过:
{% for i in (1..numfiles) %}
{% assign currentMetafield = 'shop.metafields.field_name.value_name_' | append: i %}
{% if currentMetafield['key_i_am_matching'] %}
found a match
{% else %}
no match found :(
{% endif %}
{% endfor %}
但是这不起作用,我的猜测是它不起作用,因为分配的 currentMetafield
最终是一个字符串。
我尝试打印出来自循环 {{currentMetafield}}
的值,并且其输出与我的元字段名称正确匹配。它看起来像这样:
shop.metafields.field_name.value_name_1
shop.metafields.field_name.value_name_2
shop.metafields.field_name.value_name_3
如果我手动分配元字段并查找特定键,就可以正常工作。
假设我知道第一个元字段文件中有一个特定的键。我可以这样分配它
{% assign metafield1 = shop.metafields.field_name.value_name_1 %}
那我可以这样做:
{% if shop.metafields.field_name.value_name_1['key_i_am_looking_for'] %}
found a match
{% end if %}
这 returns found a match
预测。
我需要将此字符串转换为一个对象以便 shopify 将其识别为正确的元字段文件,或者我需要执行其他操作以尝试在动态数量的元字段中找到匹配项。
感谢您的帮助!
您需要为动态值使用捕获。试试这个代码
{% for i in (1..numfiles) %}
{% capture value %}value_name_{{i}}{% endcapture %}
{% assign currentMetafield = shop.metafields.field_name[value]%}
{% if currentMetafield['key_i_am_matching'] %}
found a match
{% else %}
no match found :(
{% endif %}
{% endfor %}
我有一个动态数量的元字段进入 Shopify。我有一个特殊的元字段,它告诉我要查找多少个元字段文件,我用它来指定循环数量。
我需要遍历这些元字段并查找特定的匹配键。
numfiles
这里的变量来自那个元字段,它给我循环遍历的元字段文件总数。
我试过:
{% for i in (1..numfiles) %}
{% assign currentMetafield = 'shop.metafields.field_name.value_name_' | append: i %}
{% if currentMetafield['key_i_am_matching'] %}
found a match
{% else %}
no match found :(
{% endif %}
{% endfor %}
但是这不起作用,我的猜测是它不起作用,因为分配的 currentMetafield
最终是一个字符串。
我尝试打印出来自循环 {{currentMetafield}}
的值,并且其输出与我的元字段名称正确匹配。它看起来像这样:
shop.metafields.field_name.value_name_1
shop.metafields.field_name.value_name_2
shop.metafields.field_name.value_name_3
如果我手动分配元字段并查找特定键,就可以正常工作。
假设我知道第一个元字段文件中有一个特定的键。我可以这样分配它
{% assign metafield1 = shop.metafields.field_name.value_name_1 %}
那我可以这样做:
{% if shop.metafields.field_name.value_name_1['key_i_am_looking_for'] %}
found a match
{% end if %}
这 returns found a match
预测。
我需要将此字符串转换为一个对象以便 shopify 将其识别为正确的元字段文件,或者我需要执行其他操作以尝试在动态数量的元字段中找到匹配项。
感谢您的帮助!
您需要为动态值使用捕获。试试这个代码
{% for i in (1..numfiles) %}
{% capture value %}value_name_{{i}}{% endcapture %}
{% assign currentMetafield = shop.metafields.field_name[value]%}
{% if currentMetafield['key_i_am_matching'] %}
found a match
{% else %}
no match found :(
{% endif %}
{% endfor %}