Opencart 2.3如何获取订单商品总金额与数量并在account.php展示?
在OpenCart 2.3中获取订单商品总金额与总数量并展示在account.php页面
一、修改账户控制器(catalog/controller/account/account.php)
- 加载订单模型并计算用户订单汇总数据
在控制器的index方法中,用户信息加载完成后添加以下代码:
// 加载订单模型 $this->load->model('account/order'); // 获取当前用户的所有订单 $orders = $this->model_account_order->getOrders(); // 初始化汇总变量 $total_order_amount = 0; $total_product_quantity = 0; // 遍历订单计算总金额与总数量 foreach ($orders as $order) { // 提取订单最终总价(匹配你提供的order.php逻辑) $order_totals = $this->model_account_order->getOrderTotals($order['order_id']); foreach ($order_totals as $total) { if ($total['code'] == 'total') { // 筛选订单最终总价条目 $total_order_amount += $total['value']; break; } } // 累加订单内商品总数量 $order_products = $this->model_account_order->getOrderProducts($order['order_id']); foreach ($order_products as $product) { $total_product_quantity += $product['quantity']; } } // 格式化金额并传递给模板 $data['total_order_amount'] = $this->currency->format($total_order_amount, $this->config->get('config_currency')); $data['total_product_quantity'] = $total_product_quantity;
如果需要展示单个订单的金额与数量,修改遍历逻辑为:
foreach ($orders as &$order) { // 计算单个订单商品总数量 $product_qty = 0; $order_products = $this->model_account_order->getOrderProducts($order['order_id']); foreach ($order_products as $product) { $product_qty += $product['quantity']; } $order['total_qty'] = $product_qty; // 格式化单个订单总金额 $order_totals = $this->model_account_order->getOrderTotals($order['order_id']); foreach ($order_totals as $total) { if ($total['code'] == 'total') { $order['formatted_total'] = $this->currency->format($total['value'], $order['currency_code'], $order['currency_value']); break; } } } $data['orders'] = $orders;
二、修改账户模板文件(catalog/view/theme/你的主题/template/account/account.tpl)
- 展示订单汇总数据
在模板合适位置(如用户信息区块下方)添加:
<div class="panel panel-default"> <div class="panel-heading"> <h3 class="panel-title">我的订单汇总</h3> </div> <div class="panel-body"> <p>累计购买商品总数量:<strong><?php echo $total_product_quantity; ?></strong></p> <p>累计订单总金额:<strong><?php echo $total_order_amount; ?></strong></p> </div> </div>
如果展示单个订单明细,添加遍历代码:
<div class="panel panel-default"> <div class="panel-heading"> <h3 class="panel-title">我的订单明细</h3> </div> <div class="panel-body"> <?php foreach ($orders as $order) { ?> <div class="order-item"> <p>订单号:<?php echo $order['order_id']; ?></p> <p>商品总数量:<?php echo $order['total_qty']; ?></p> <p>订单总金额:<?php echo $order['formatted_total']; ?></p> <hr> </div> <?php } ?> </div> </div>
说明
- 订单总金额通过
getOrderTotals方法获取,筛选code为total的条目即为最终总价,和你提供的order.php逻辑一致。 - 商品总数量通过
getOrderProducts方法获取订单内商品,累加quantity字段得到。
内容的提问来源于stack exchange,提问作者Dan09
相关产品推荐
相关产品推荐

