Shopify Liquid中如何从关联JSON元字段获取group_title值
Shopify Liquid获取指定元字段中group_title值的写法
首先明确你拿到的元字段解析后的数据层级:
- 顶级节点包含
collections、group两个键 group节点的值是键值对结构,键为动态生成的数字ID(示例中为1656046878),每个ID对应的值是数组- Liquid数组下标从0开始计数,第1个元素(下标0)就是存储
group_title的对象
固定ID直接取值
如果你明确要取的group的ID(比如示例里的1656046878),直接按层级取值即可:
{% assign faq_config = shop.metafields.advance_faq_app.advance_faq_app %} <!-- 注意数字类型的动态键必须用中括号+引号包裹,不能直接用点语法 --> {{ faq_config.group['1656046878'][0].group_title }}
以上代码输出结果为page1,和示例数据完全对应。
遍历所有group动态取值
如果group下有多个未知ID的分组,直接遍历group节点即可,不需要写死ID:
{% assign faq_config = shop.metafields.advance_faq_app.advance_faq_app %} <ul> {% for group_id, group_content in faq_config.group %} <li> 分组ID:{{ group_id }}<br> 分组标题:{{ group_content[0].group_title }}<br> 分组样式:{{ group_content[1].style }} <!-- 选中集合字段是字符串格式的JSON,需要转成数组才能遍历使用 --> {% assign selected_coll_ids = group_content[2].selected_coll | parse_json %} </li> {% endfor %} </ul>
原有代码的问题
你之前写的循环没有用到循环变量field,属于无效循环。如果要遍历元字段的顶级节点,正确写法为:
{% for top_key, top_value in shop.metafields.advance_faq_app.advance_faq_app %} <li>顶级键:{{ top_key }}</li> {% endfor %}
该循环会依次输出collections、group两个顶级键名。
内容的提问来源于stack exchange,提问作者Deep
相关产品推荐
相关产品推荐

