如何在Shopify中基于重量为运费添加额外收费
在Shopify中实现基于购物车重量的额外运费规则
你可以通过两种方式实现这个需求:利用Shopify内置的配送设置(无需代码),或者通过自定义代码/脚本实现(适合复杂场景)。
方法一:无需代码的内置配送设置
这是最简单的实现方式,适合大多数普通店铺:
- 登录Shopify后台,进入设置 > 配送和发货页面
- 在“配送区域”板块,找到你需要设置规则的区域,点击管理费率
- 点击添加费率,选择基于重量的费率
- 配置两个运费区间:
- 第一个区间:设置起始重量为0,结束重量为1kg,填写你的基础运费金额(即购物车重量≤1kg时的运费)
- 第二个区间:设置起始重量为1kg,结束重量留空(表示覆盖所有超过1kg的情况),填写「基础运费 + 20tk」作为初始费用;然后在“额外收费”部分,选择「每增加1千克」,金额填入20tk
- 保存设置即可
注:确保你的店铺重量单位已设置为千克(进入设置 > 通用 > 重量单位确认)
方法二:自定义代码/脚本实现(适合复杂场景)
如果内置设置无法满足你的特殊需求(比如需要和其他条件联动),可以用以下方式:
1. 主题代码修改(显示额外运费)
在你的主题文件中(通常是cart.liquid或cart-template.liquid)添加以下逻辑,计算并显示超重额外费用:
{# 将Shopify默认的克转换为千克 #} {% assign total_weight_kg = cart.total_weight | divided_by: 1000.0 %} {% assign excess_weight = total_weight_kg | minus: 1 %} {% assign extra_shipping_fee = 0 %} {% if excess_weight > 0 %} {# 向上取整,不足1kg按1kg计算费用 #} {% assign excess_weight_rounded = excess_weight | ceil %} {% assign extra_shipping_fee = excess_weight_rounded | times: 20 %} {% endif %} {# 在购物车页面显示额外费用 #} {% if extra_shipping_fee > 0 %} <div class="cart__extra-fee"> <p><strong>超重额外运费:</strong> {{ extra_shipping_fee }} tk</p> </div> {% endif %}
2. Shopify Plus用户:用Shipping Script添加自动收费
如果你是Shopify Plus订阅用户,可以用Script Editor创建脚本,让额外费用自动加入订单:
MAX_BASE_WEIGHT = 1.0 # 基础重量阈值(千克) EXTRA_FEE_PER_KG = 20 # 每千克额外收费(tk) Input.shipping_rates.each do |rate| # 将Shopify的克单位转换为千克 total_weight_kg = Input.cart.total_weight / 1000.0 # 计算超出的重量,最小为0 excess_weight = [total_weight_kg - MAX_BASE_WEIGHT, 0].max # 向上取整,不足1kg按1kg收费 excess_weight_rounded = excess_weight.ceil extra_fee = excess_weight_rounded * EXTRA_FEE_PER_KG if extra_fee > 0 rate.add_adjustment(extra_fee, "超重额外收费") end end
注意事项
- 修改主题代码前,务必备份你的主题文件,避免出错
- 内置设置的运费规则会自动应用到结账流程,无需额外处理
- Shipping Script仅对Shopify Plus用户开放,脚本生效后会自动在结账时计算并添加额外费用
内容的提问来源于stack exchange,提问作者Mariful Islam Saad
相关产品推荐
相关产品推荐

