Shopify sort_natural 中文排序乱序怎么修
现象#
品牌列表用 sort_natural 排序后,中文名没有按拼音走,而是「阿」「白」「红」乱跳;英文和数字品牌又插在中间。
原因#
- sort_natural 只做忽略大小写的字符比较,按 Unicode 码位排序,不做拼音转换
- 常用汉字的码位区间与拼音顺序无关,生僻字还会落到完全不同的区段
- 主题直接把 title 当排序键,中文标题没有可排序的辅助字段
- 编号写成 1、2、10 时逐字符比较,10 会排在 2 前面
处理步骤#
- 在商品或集合上建文本 metafield,例如
custom.sort_key,写入拼音或运营给的序号 - 按该字段排序:
{% assign sorted = collection.products | sort: 'metafields.custom.sort_key' %} - 没有 metafield 时改用后台的手动排序,模板直接遍历
collection.products,不要再二次排序 - 序号统一补零成
01、02,让字符比较等价于数值比较 - 空值会排在最前,先用
where过滤掉没有 sort_key 的商品
验收标准#
品牌页顺序与运营给的拼音清单完全一致;刷新页面、切换分页后顺序不变,没有 sort_key 的商品不再占据首位。
本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。