Shopify 主题与 Liquid

Shopify sort_natural 中文排序乱序怎么修

现象#

品牌列表用 sort_natural 排序后,中文名没有按拼音走,而是「阿」「白」「红」乱跳;英文和数字品牌又插在中间。

原因#

  • sort_natural 只做忽略大小写的字符比较,按 Unicode 码位排序,不做拼音转换
  • 常用汉字的码位区间与拼音顺序无关,生僻字还会落到完全不同的区段
  • 主题直接把 title 当排序键,中文标题没有可排序的辅助字段
  • 编号写成 1、2、10 时逐字符比较,10 会排在 2 前面

处理步骤#

  1. 在商品或集合上建文本 metafield,例如 custom.sort_key,写入拼音或运营给的序号
  2. 按该字段排序:{% assign sorted = collection.products | sort: 'metafields.custom.sort_key' %}
  3. 没有 metafield 时改用后台的手动排序,模板直接遍历 collection.products,不要再二次排序
  4. 序号统一补零成 01、02,让字符比较等价于数值比较
  5. 空值会排在最前,先用 where 过滤掉没有 sort_key 的商品

验收标准#

品牌页顺序与运营给的拼音清单完全一致;刷新页面、切换分页后顺序不变,没有 sort_key 的商品不再占据首位。

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