You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prestashop1.7.8 Smarty中促销结束日期减1天代码失效问题

PrestaShop 1.7.8 促销结束日期前端展示修正方案

问题说明

PrestaShop 1.7.8 原生折扣日期选择器不支持时间维度配置,促销活动会在设置的结束日期零点直接终止,无法覆盖结束日期全天。因此后台配置促销规则时,必须将结束日期多设置1天,才能保证结束日当天促销正常生效。
这种配置逻辑会导致前端直接读取specificPrice.to字段输出促销结束日期时,展示的日期比实际促销结束日多1天,直接在date_format修饰符后拼接"-1 days"的写法不符合Smarty语法规则,无法正常运行。

错误写法问题

原错误代码:

{l s='End promo: '}{$product->specificPrice.to|date_format:'%d-%m-%Y' . "-1 days"}

Smarty的模板修饰符不支持通过字符串拼接的方式传入日期偏移参数,这种写法会被识别为非法格式串,直接输出错误结果或者报错。

可用实现代码

直接在模板中使用Smarty原生修饰符组合完成日期减1天计算,无需修改后端PHP逻辑,PrestaShop 1.7.8 自带Smarty环境完全兼容:

{l s='End promo: '}{$product->specificPrice.to|strtotime:"-1 day"|date_format:'%d-%m-%Y'}

备选兼容写法

如果上述写法在你的定制模板中存在兼容问题,可以使用PHP原生时间计算逻辑嵌套写法,适配所有Smarty版本:

{l s='End promo: '}{$product->specificPrice.to|date_format:'%d-%m-%Y':strtotime('-1 day', $product->specificPrice.to|strtotime)}

注意事项

修改完模板文件后,需要进入PrestaShop后台「高级参数 > 性能」页面,清空Smarty编译缓存,否则前端不会立即展示修改后的效果。

内容的提问来源于stack exchange,提问作者azvm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 22:57:10