Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shopify 循环通过在液体中附加_indexNumber的元字段,这些元字段需要分配给对象值以匹配特定键_Shopify_Liquid - Fatal编程技术网

Shopify 循环通过在液体中附加_indexNumber的元字段,这些元字段需要分配给对象值以匹配特定键

Shopify 循环通过在液体中附加_indexNumber的元字段,这些元字段需要分配给对象值以匹配特定键,shopify,liquid,Shopify,Liquid,我有一个动态数量的元字段进入Shopify。我有一个特殊的元字段,它告诉我要查找多少个元字段文件,我用它来指定循环量 我需要遍历这些元字段并查找特定的匹配键 numfiles这里的变量来自该元字段,该元字段给出了要循环的元字段文件总数 我试过: {% for i in (1..numfiles) %} {% assign currentMetafield = 'shop.metafields.field_name.value_name_' | append: i %} {% if curre

我有一个动态数量的元字段进入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\u name.value\u name\u 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 %}

谢谢,谢谢!!它工作得很好,完全符合我的需要。我永远欠你的债!