如何通过Shopify API获取购物车及商品页的Liquid模板文件名?
如何获取Shopify购物车/商品页的Liquid模板文件名
核心结论
可以通过Shopify Admin API或者Liquid内置变量获取目标页面的模板/section文件名,分两种场景处理:
1. 通过Shopify Admin API获取(适合批量/后台操作)
步骤1:获取当前活跃主题ID
先调用Admin API获取店铺的主题列表,筛选出role为main的主题(即当前正在使用的主题):
GET /admin/api/2024-07/themes.json
返回结果中找到{"role": "main"}的主题,记录它的id。
步骤2:获取主题下的所有资产文件
用主题ID调用资产列表API:
GET /admin/api/2024-07/themes/{theme_id}/assets.json
遍历返回的assets数组,根据页面类型筛选目标文件:
购物车页面
- 传统主题:查找
key为templates/cart.liquid的文件 - Online Store 2.0主题:先找
templates/cart.json,解析这个JSON文件的sections字段(通常会有"main": "main-cart"这样的配置),对应的section文件是sections/main-cart.liquid - 额外排查:部分主题可能自定义命名,比如
templates/cart-custom.liquid或sections/cart-main.liquid,可以通过key包含cart的关键词筛选。
商品页面
- 传统主题:查找
key为templates/product.liquid的文件 - Online Store 2.0主题:先找
templates/product.json,解析其sections字段,找到对应的主section(比如sections/main-product.liquid) - 自定义模板:可能存在
templates/product.[suffix].liquid格式的文件(比如templates/product.featured.liquid),这类是商品的自定义模板,需根据实际需求筛选。
2. 通过Liquid内置变量获取(适合前端/模板内操作)
如果你的代码是在Liquid模板中执行,可以直接用Shopify内置变量获取当前页面的模板信息:
{{ template }}:返回当前页面的模板标识,比如购物车页返回cart,商品页返回product;如果使用了自定义模板,会返回cart.[suffix]或product.[suffix]{{ template_suffix }}:返回自定义模板的后缀部分,比如使用templates/cart.main-cart.liquid时,该变量返回main-cart{{ section.id }}:在Online Store 2.0的section文件中,返回当前section的文件名(比如main-cart)
举个例子,在购物车页面的Liquid代码中,输出模板信息:
当前模板标识: {{ template }} {% if template_suffix %} 自定义模板后缀: {{ template_suffix }} {% endif %}
注意事项
- Online Store 2.0主题普遍使用JSON模板+section的结构,核心代码通常在
sections/目录下,而非templates/的Liquid文件 - 部分主题可能将购物车/商品逻辑拆分到多个section中,需要根据实际代码结构判断注入位置
内容的提问来源于stack exchange,提问作者Extreme_Tough
相关产品推荐
相关产品推荐

