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

Shopify Liquid技术问询:如何通过SKU数组循环获取对应产品

解决Shopify自定义集合模板通过SKU列表展示产品的问题

你的核心问题是原代码没有正确通过SKU定位到对应的产品实例——在集合模板中,product变量并非指向单个产品,且你没有主动通过SKU去获取目标产品对象。下面提供两种可行的解决方案:

方案1:使用all_products对象(适合SKU数量≤20的场景)

Shopify的all_products对象支持直接通过SKU获取产品实例,代码调整如下:

{% assign product_skus = "1234,5678,9101,1121" | split: ',' %}
{% for sku in product_skus %}
  {% assign target_product = all_products[sku] %}
  {% if target_product %}
    {% include "product-tile" with product: target_product %}
  {% endif %}
{% endfor %}
  • 逻辑说明:遍历拆分后的SKU数组,用all_products[sku]直接拉取对应产品;添加if target_product判断,避免SKU不存在时触发报错;通过with product: target_product把产品对象传递给product-tile模板。
  • 限制:all_products最多只能加载20个产品,SKU数量超过20时不适用。

方案2:SKU数量超过20的批量处理方案

如果每月促销的SKU数量较多,推荐结合元字段+智能集合的方式,更高效且无数量限制:

  1. 给需要加入促销集合的产品添加元字段:
    • 命名空间:custom
    • 键:promo_active
    • 值:true(布尔类型)
  2. 在Shopify后台创建智能集合,设置规则为:元字段 -> custom.promo_active 等于 true
  3. 每月更新时,用Shopify批量编辑工具(或第三方批量修改工具),给目标产品的promo_active元字段设为true,过期产品设为false即可自动更新集合。

另一种备选方案是用搜索API绕过数量限制(适合临时场景):

{% assign product_skus = "1234,5678,9101,1121" | split: ',' %}
{% for sku in product_skus %}
  {% assign search_results = search.search("sku:" | append: sku) %}
  {% if search_results.products.size > 0 %}
    {% include "product-tile" with product: search_results.products.first %}
  {% endif %}
{% endfor %}
  • 注意:确保SKU在店铺中是唯一的,避免搜索返回多个产品;频繁调用搜索可能影响页面加载速度,不建议大量SKU场景使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:43:14