如何高效检索Shopify中商品所属的全部集合及层级关系
高效导出Shopify商品及层级集合CSV的实现方案
减少API请求的优化方案
你之前逐个商品调用接口的方式确实会产生大量不必要的请求,用以下方案可以把请求量降到几十次级别,哪怕店铺有上万商品也能稳定运行:
- 先批量全量拉取所有
Collect关联数据:Shopify REST API支持每次请求拉取最多250条Collect记录,加上limit=250参数用游标分页,就能一次性拉完店铺所有商品和集合的关联关系,本地存为商品ID -> 关联集合ID列表的映射表。 - 再批量全量拉取所有
Collection集合数据:同样用limit=250分页拉取所有集合的基础信息(名称、handle、元字段等),本地存为集合ID -> 集合详情的映射表。 - 最后批量拉取商品基础数据:分页拉取商品的名称、价格、图片URL等所需字段,直接查本地的两个映射表就能匹配到所属集合,不需要为单个商品发起任何API请求。
如果你的店铺支持GraphQL Admin API,效率可以进一步提升,一次查询就能批量拿到250个商品的所有所需字段+关联集合信息,参考查询语句如下:
{ products(first: 250) { edges { node { title priceRangeV2 { minVariantPrice { amount currencyCode } } images(first: 1) { edges { node { originalSrc } } } collections(first: 10) { edges { node { id title handle } } } } } pageInfo { endCursor hasNextPage } } }
集合层级关系获取方法
Shopify本身没有内置集合的父子层级结构,你看到的导航类层级是存在店铺的导航菜单配置中的,按以下方式即可拿到层级路径:
- 直接调用Menu API拉取站点主导航数据,一般店铺的主导航handle为
main-menu,拉取后可以拿到每个菜单项的层级、关联的集合handle,本地组装为集合handle -> 完整层级路径的映射表即可。 - 如果部分商品关联的集合不在主导航内,可以提前给集合新增自定义元字段存储父集合ID,拉取集合数据时同步拉取元字段,自行拼接生成层级路径。
- 匹配商品层级时,优先取导航菜单内关联的集合路径,按导航的层级深度排序后即可输出
男装 > 衬衫 > 红色衬衫这类格式的层级文本。
内容的提问来源于stack exchange,提问作者user199421
相关产品推荐
相关产品推荐

