如何在PrestaShop Smarty的header.tpl中获取订单总价配置Bing Ads脚本?
在PrestaShop Smarty模板中获取订单总价用于Bing Ads部署
没问题,我来帮你搞定这个事儿——毕竟要给Bing Ads传正确的转化数据,订单总价的获取得精准才行~
首先得明确:订单总价只有在订单确认/成功页面才能拿到有效数据,因为其他页面(比如首页、产品页)不存在已完成的订单对象。所以我们需要在header.tpl里添加带判断的脚本,避免在非订单页面报错,同时正确传入订单总价。
具体实现步骤:
先判断是否存在订单对象
在PrestaShop的订单确认页,系统会自动把订单对象传递给Smarty模板,变量名为$order。我们得先判断这个变量是否存在,再加载Bing Ads脚本,不然非订单页面会报错。选对合适的总价变量
根据你的需求,有两个常用的总价变量可选:{$order->total_paid}:用户实际支付的最终总价(包含运费、税费、折扣等所有调整项),这是最常用的转化价值字段。{$order->total_paid_tax_excl}:不含税的订单总价,如果你需要统计税前金额可以用这个。
替换后的完整脚本
将这段代码添加到你的header.tpl文件中:{if isset($order)} <script> window.uetq = window.uetq || []; window.uetq.push({ 'gv': {$order->total_paid}, 'gc': 'EUR' }); </script> {/if}
针对PrestaShop 1.7+的补充说明
如果你用的是PrestaShop 1.7及以上版本,也可以用数组式的变量写法(和对象式效果完全一致):
{if isset($order)} <script> window.uetq = window.uetq || []; window.uetq.push({ 'gv': {$order.total_paid}, 'gc': 'EUR' }); </script> {/if}
额外提醒
- 千万别漏了
{if isset($order)}这个判断,否则在非订单页面Smarty会抛出变量不存在的错误。 - 确保
'gc'字段的货币代码和你的店铺默认货币一致,这里你用的是EUR,如果是其他货币要对应修改。
内容的提问来源于stack exchange,提问作者Luxm
相关产品推荐
相关产品推荐

