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

Shopify元字段数组使用Liquid concat过滤器失效问题求助

解决Shopify元字段数组使用concat过滤器失效的问题

问题原因

Shopify的list.product_reference和list.variant_reference类型元字段返回的不是原生Liquid数组,而是Shopify自定义的集合(Collection)对象。这类对象虽然能被循环遍历,但concat过滤器仅接受标准Liquid数组作为参数,直接拼接就会触发报错。

解决方法

方法一:手动循环构建数组(兼容性最优)

先初始化一个空数组,再分别遍历两个元字段的内容,将每个元素推入数组:

{%- assign items = '' | split: '' -%}
{%- for product in product.metafields.custom.fcv_products.value -%}
  {%- assign items = items | push: product -%}
{%- endfor -%}
{%- for variant in product.metafields.custom.fcv_variants.value -%}
  {%- assign items = items | push: variant -%}
{%- endfor -%}

通过这种方式得到的items是标准Liquid数组,可正常进行后续操作。

方法二:使用to_a过滤器转换(简化写法)

部分Shopify环境支持用to_a过滤器将集合对象直接转为原生数组,可尝试以下写法:

{%- assign products = product.metafields.custom.fcv_products.value | to_a -%}
{%- assign variants = product.metafields.custom.fcv_variants.value | to_a -%}
{%- assign items = products | concat: variants -%}

注意:若主题或Shopify版本不支持to_a,此方法会失效,优先推荐方法一。

补充说明

之前区块设置的数组可以正常使用concat,是因为区块的数组配置返回的是原生Liquid数组,与元字段返回的集合对象类型不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 05:42:09