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

Shopify Liquid:分页页面中collection.all_products数组返回空值

解决Shopify集合页面加载全部商品时collection.all_products为空的问题

嘿,我之前在Shopify主题开发里碰到过一模一样的坑,让我帮你拆解一下问题出在哪,以及怎么修复!

问题根源

你想用{% paginate collection.all_products by collection.all_products_count %}绕过默认50个商品限制的思路是对的,但这里藏着一个Liquid渲染顺序的坑:当你直接在paginate标签里使用collection.all_products_count时,Liquid在解析分页逻辑的阶段,还没正确初始化collection.all_products的完整集合,导致分页规则失效,最终返回空数组。

另外要注意:Shopify的paginate标签中,by参数的最大值是100,如果你的集合商品数超过100,这个方法只能加载前100个,但先解决当前空数组的问题再说。

修复方案

我们可以先把总商品数提前赋值给一个独立变量,再用这个变量设置分页数量,就能避开上下文解析的问题:

{% assign total_collection_products = collection.all_products_count %}

{% paginate collection.all_products by total_collection_products %}
  {% if collection.all_products.size > 0 %}
    {% for product in collection.all_products %}
      <!-- 这里写你的商品渲染代码,比如产品卡片、标题、价格等 -->
      <div class="product-item">
        <h3>{{ product.title }}</h3>
        <p>{{ product.price | money }}</p>
      </div>
    {% endfor %}
  {% else %}
    <p>这个集合还没有商品哦</p>
  {% endif %}
{% endpaginate %}

额外排查点

如果按上面的写法还是空数组,你可以先在页面上输出{{ collection.all_products_count }}看看数值:

  • 如果输出是0,那说明你的集合本身确实没有商品,需要检查集合的商品关联设置;
  • 如果输出大于0但数组还是空,那可能是你的主题里有其他逻辑(比如隐藏缺货商品的筛选器)影响了collection.all_products的返回结果,可以暂时移除其他筛选代码测试。

内容的提问来源于stack exchange,提问作者Simon.Hermit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:30:00