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

Opencart 2.3如何获取订单商品总金额与数量并在account.php展示?

在OpenCart 2.3中获取订单商品总金额与总数量并展示在account.php页面

一、修改账户控制器(catalog/controller/account/account.php)

  1. 加载订单模型并计算用户订单汇总数据
    在控制器的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)

  1. 展示订单汇总数据
    在模板合适位置(如用户信息区块下方)添加:
<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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:10:25