如何在Shopify产品页面显示匹配产品类型的集合元字段?
在Shopify产品页面显示对应集合元字段的方法
由于产品页面默认没有关联的collection对象,你需要通过product.type匹配到对应集合后,再调用其元字段,以下是两种可行方案:
方案一:通过集合Handle匹配(推荐)
如果你的集合Handle是产品类型的标准化格式(比如产品类型为"智能手表",集合Handle为"smart-watches"),可以直接通过Handle快速定位集合:
{% assign target_collection = collections[product.type | handle] %} {% if target_collection %} <!-- 替换成你需要展示的元字段内容和样式 --> <div class="collection-meta"> {{ target_collection.metafields.custom.metafield1 }} </div> {% else %} <p>暂无相关集合信息</p> {% endif %}
product.type | handle会自动将产品类型转换为Shopify标准的Handle格式(小写、空格转连字符、去除特殊字符),只要集合Handle和这个转换结果一致就能匹配成功。
方案二:通过集合标题匹配
如果集合标题和产品类型完全一致(大小写、字符都匹配),可以循环所有集合查找目标:
{% assign target_collection = nil %} {% for collection in collections %} {% if collection.title == product.type %} {% assign target_collection = collection %} {% break %} {% endif %} {% endfor %} {% if target_collection %} <div class="collection-meta"> {{ target_collection.metafields.custom.metafield1 }} </div> {% else %} <p>暂无相关集合信息</p> {% endif %}
注意事项
- 优先用方案一,因为Handle是唯一且标准化的,避免标题大小写、字符差异导致匹配失败。
- 测试时可以先输出
{{ product.type | handle }},确认转换后的字符串和目标集合的Handle完全一致。 - 如果元字段是富文本类型,需要用
{{ target_collection.metafields.custom.metafield1.value }}或者{{ target_collection.metafields.custom.metafield1 | metafield_tag }}来正确展示。
内容的提问来源于stack exchange,提问作者Frank
相关产品推荐
相关产品推荐

