Dawn主题main-product.liquid获取变体元字段失败,求排查Liquid代码
代码问题分析及修复建议
你的代码存在三个核心问题:
- 元字段归属对象错误:你要获取的是**变体(variant)**的元字段,但代码里用了
product.metafields,这是调用产品级别的元字段,和变体元字段完全无关,自然拿不到值。 - 元字段调用语法错误:正确的元字段调用格式是
对象.metafields.命名空间.字段键(比如variant.metafields.my_fields.custom_value)或者用方括号语法对象.metafields['命名空间']['字段键']。你写的product.metafields namespace.key缺少必要的点号分隔,而且多余的| json过滤器完全用错了位置——这个过滤器是把Liquid对象转成JSON字符串,不是用来赋值元字段的。 - 变体上下文缺失:要获取变体元字段,必须先定位到具体的变体对象,比如当前选中的变体或者遍历的某个变体,直接用
product对象根本触达不到变体的元字段。
修复后的示例代码
如果要展示当前选中变体的元字段:
{% assign current_variant = product.selected_or_first_available_variant %} {% if current_variant.metafields.namespace.key %} Value: {{ current_variant.metafields.namespace.key }} {% endif %}
如果要遍历所有变体并展示各自的元字段:
{% for variant in product.variants %} <p>变体 {{ variant.title }} 的自定义字段值: {{ variant.metafields.namespace.key | default: '无值' }}</p> {% endfor %}
注意:把代码里的namespace和key替换成你实际使用的元字段命名空间和字段键。
内容的提问来源于stack exchange,提问作者oscp oscp
相关产品推荐
相关产品推荐

