如何用Liquid过滤含group-id属性的购物车line_items数组?
在Shopify Liquid中筛选带嵌套properties的购物车商品
Shopify Liquid的where过滤器**不支持直接通过嵌套属性路径(比如properties.group-id)**筛选数组,这也是你尝试的写法失效的原因——它只能识别对象的直接一级属性,无法解析嵌套的键值对。
目前没有比「for循环+条件判断」更简便的原生实现方式,这是Shopify Liquid语法限制下的最优解。以下是具体的代码示例:
筛选所有带有group-id属性的商品
{% assign filtered_items = empty %} {% for item in items %} {% if item.properties['group-id'] %} {% assign filtered_items = filtered_items | push: item %} {% endif %} {% endfor %}
进阶:筛选group-id等于特定值的商品
如果需要匹配具体的属性值,只需调整条件判断:
{% assign target_group = 'your-target-group-id' %} {% assign filtered_items = empty %} {% for item in items %} {% if item.properties['group-id'] == target_group %} {% assign filtered_items = filtered_items | push: item %} {% endif %} {% endfor %}
补充说明
虽然Jekyll的where_exp可以解决嵌套筛选问题,但Shopify Liquid并未集成该过滤器。如果你的场景允许,也可以考虑将group-id设置为产品的元字段(Metafield),不过对于购物车的line_items来说,直接用properties配合for循环仍是最直接的方案。
内容的提问来源于stack exchange,提问作者ap5356
相关产品推荐
相关产品推荐

