我有动态数量的元字段进入 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
如果我手动分配元字段并查找特定键,则效果很好。
假设我知道第一个元字段文件中有一个特定的键。我可以像这样分配它
{% 分配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 %}
这会预测性地返回找到匹配项
。
我要么需要将此字符串转换为一个对象,以便 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 - 循环遍历在 Liquid 中附加 _indexNumber 的元字段,这些元字段需要分配给对象值以匹配特定键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66873245/