PrestaShop购物流程中$cart.totals.total.value表达式的构成规则是什么
PrestaShop 购物车表达式逻辑与自定义计算实现方案
1. $cart.totals.total.value 构成逻辑拆解
以下变量结构适用于PrestaShop 1.7.x及以上版本,1.6版本购物车变量逻辑差异较大,不适用该规则
- 最顶层
$cart:当前购物车的对象实例,包含购物车全量数据,比如商品列表、购买数量、运费、税费、各类折扣等信息 - 第二层
totals:购物车所有金额项的聚合数组,按类型分类存储了子项配置、金额数值、格式化显示值等信息,常见子项包括商品小计、运费、税费、折扣、订单总计等 - 第三层
total:totals数组下的订单最终总计子项,对应前端购物车页展示的「应付总金额」条目 - 最底层
value:该总计项的原始数值,单位为当前商城默认货币的最小单位(比如人民币为分,欧元为欧分),如果需要带货币符号的格式化显示值可以调用同层级的value_formatted字段
补充说明:该值已经自动包含了商品小计、运费、税费、优惠券抵扣、满减等所有金额调整项,不需要二次计算。如果要在CMS Block里调用该值,需要先确保对应CMS模块已经注入了全局
$cart变量,部分版本默认CMS Block没有注入的话需要到模块配置里开启全局变量传递,或者在对应控制器里手动注册变量。
2. cart.tpl 自定义(($qty * $price) - $ship)计算实现
2.1 调用原生变量计算(推荐,稳定性高)
如果你的计算逻辑为「商品总金额(数量×单价)减去运费」,可以直接用cart.tpl默认预定义的变量组合计算:
{* 1.7+版本通用变量调用 *} {assign var="total_product" value=$cart.subtotals.products.value} {assign var="shipping_fee" value=$cart.subtotals.shipping.value} {assign var="custom_calc_result" value=$total_product - $shipping_fee} {* 输出原始数值 *} {$custom_calc_result} {* 输出格式化带货币符号的显示结果 *} {displayPrice price=$custom_calc_result currency=$cart.id_currency}
2.2 自定义遍历商品计算(支持自定义单价/数量规则)
如果你的$qty是自定义统计的商品数量、$price是特殊规则的单价(比如不包含税费的单价),可以遍历商品列表计算:
{assign var="total_custom_product" value=0} {foreach from=$cart.products item=product} {* 可自行替换为你需要的数量、单价字段,比如不含税单价可以用$product.price_tax_excl *} {assign var="total_custom_product" value=$total_custom_product + $product.quantity * $product.price} {/foreach} {assign var="shipping_fee" value=$cart.subtotals.shipping.value} {assign var="custom_calc_result" value=$total_custom_product - $shipping_fee} {* 输出格式化结果 *} {displayPrice price=$custom_calc_result currency=$cart.id_currency}
内容的提问来源于stack exchange,提问作者Flag King
相关产品推荐
相关产品推荐

