Shopify 主题与 Liquid

Shopify 集合页 sort_by 排序不生效怎么修

现象#

集合页加了 sort 过滤器,前台顺序没变;从右上角下拉框切到「价格从低到高」时列表也纹丝不动,URL 里只有 page 参数。

原因#

  • 排序应由 collection.sort_by 驱动,对已返回的数组再做 sort 不会改变服务端分页顺序
  • 下拉框只改了前端显示,没有把 sort_by 提交到 URL,请求仍是默认排序
  • 分页与排序同时存在时,主题只保留了 page 参数,sort_by 在翻页时被丢掉
  • Section Rendering API 请求没有带 sort_by,返回的是默认排序结果

处理步骤#

  1. 读取当前排序:{% assign current = collection.sort_by | default: collection.default_sort_by %}
  2. 用 collection.sort_options 生成下拉框,选项值作为 sort_by 参数提交
  3. 直接改地址验证:在集合 URL 后加 ?sort_by=price-ascending
  4. 分页链接里保留 sort_by,避免翻页后回到默认顺序
  5. 调用 Section Rendering API 时把 sort_by 一起带上

验收标准#

切换下拉框后 URL 出现 sort_by 参数,列表首件商品价格符合所选顺序;翻到第 2 页顺序仍然保持。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。