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

如何在PrestaShop订单确认页显示{$product.availability_message}

解决PrestaShop 1.7订单确认页无法显示库存提示的问题

问题根源

购物车页和订单确认页的产品数据上下文存在差异:订单确认页的$product数组默认不包含quantity_all_versions和availability_message字段——这两个字段是购物车页特有的实时库存相关数据,而订单确认页的商品数据来自已生成的订单记录,并非实时库存查询结果。

解决方案

1. 修改订单确认控制器,补充数据传递

找到 /controllers/front/OrderConfirmationController.php 文件,在 initContent() 方法中,找到遍历订单商品的代码块(通常是 foreach ($order->products as &$product)),添加以下代码补充库存相关字段:

foreach ($order->products as &$product) {
    // 初始化产品对象
    $product_obj = new Product($product['id_product'], false, $this->context->language->id);
    // 获取所有产品组合的总库存
    $product['quantity_all_versions'] = $product_obj->getQuantityTotal();
    // 获取对应的库存提示信息
    $product['availability_message'] = $product_obj->getAvailability($this->context->language->id);
}
unset($product); // 解除引用

2. 调整模板的变量访问方式

订单确认页的$product是数组类型(而非购物车页的对象类型),修改order-confirmation-table.tpl中的代码为:

{if (isset($product.quantity_all_versions) && $product.quantity_all_versions < 0)}
    <div>
        <span class="red icon--pulsing"></span>
        <span class="msg">{$product.availability_message}</span>
    </div>
{else}
    <div>
        <span class="icon--pulsing"></span> 
        <span class="msg">Available</span>
    </div>
{/if}

3. 清理缓存使修改生效

登录PrestaShop后台,进入高级参数 -> 性能,点击“清除缓存”按钮;或手动删除服务器上var/cache目录下的所有文件,确保控制器和模板的修改被加载。

注意事项

  • 修改核心文件前建议做好备份,避免操作失误导致网站异常;
  • 如果使用第三方主题,需确认模板文件路径为主题目录下的order-confirmation-table.tpl(而非默认模板);
  • 测试时需完成完整下单流程,验证订单确认页的提示是否正常显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:26:03