You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shopify/Liquid中遍历未知键的Metaobject元字段?

在Shopify Liquid中动态遍历Metaobject的所有元字段

要实现动态遍历Metaobject的所有元字段(无需提前知晓字段键),你可以通过两种方式实现:

方法1:使用metafields过滤器(推荐)

这个过滤器会直接返回Metaobject所有元字段的数组,无需处理命名空间,代码最简洁:

{% assign my_metaobject = product.metafields.custom.my_metaobject.value %}
{% assign all_fields = my_metaobject | metafields %}

{% for field in all_fields %}
  <!-- 可自定义输出格式,比如同时显示字段键和值 -->
  <div class="metaobject-field">
    <span class="field-key">{{ field.key }}</span>:
    <span class="field-value">{{ field.value }}</span>
  </div>
{% endfor %}

方法2:遍历命名空间及下属字段

如果需要按命名空间区分字段,可以逐层遍历:

{% assign my_metaobject = product.metafields.custom.my_metaobject.value %}

{% for namespace, fields_group in my_metaobject.metafields %}
  <h3>{{ namespace }} 命名空间字段</h3>
  {% for field in fields_group %}
    <p>{{ field.key }}: {{ field.value }}</p>
  {% endfor %}
{% endfor %}

原写法无效的原因

你之前直接遍历my_metaobject.metafields时,拿到的是按命名空间分组的对象(比如custom是一个命名空间,对应一组字段),而非可直接遍历的字段数组,因此无法直接输出字段值。

后续给Metaobject新增字段后,以上两种写法都会自动加载新字段,无需修改主题代码。

内容的提问来源于stack exchange,提问作者gcoulson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 23:52:42