opencart如何使用扩展计算价格

时间:2013-12-02 07:24:35

标签: php opencart

在opencart的cofirmation页面中,价格是使用一些扩展计算的,保存在扩展类型为“total”的数据库中。这是在那里使用的代码,

$total_data = array();
$total = 0;
$taxes = $this->cart->getTaxes();

$this->load->model('checkout/extension');
$sort_order = array(); 

$results = $this->model_checkout_extension->getExtensions('total');
foreach ($results as $key => $value) {
    $sort_order[$key] = $this->config->get($value['key'] . '_sort_order');
}

array_multisort($sort_order, SORT_ASC, $results);

foreach ($results as $result) {
    $this->load->model('total/' . $result['key']);
    $this->{'model_total_' . $result['key']}->getTotal($total_data, $total, $taxes);
}

$sort_order = array();

foreach ($total_data as $key => $value) {
        $sort_order[$key] = $value['sort_order'];
}

array_multisort($sort_order, SORT_ASC, $total_data);

在此计算之后,变量$total_data用于在模板文件中显示为定价详细信息。我真的很困惑如何进行计算。我想在计算中添加一些额外的数据。

1 个答案:

答案 0 :(得分:1)

首先,加载所有总计扩展,然后对其进行排序,然后为每个扩展计算相应的价格,最后返回排序的值。我觉得有点矫枉过正,而不是3代表 - 每个循环可能代码可以改进并打包成一个(没试过,只是我的第一次猜测)。

无论如何,总计是这样的:

  • 子总
  • VAT
  • 优惠券
  • 航运

它们以各自的顺序显示(在管理中设置),而total总计的sort_order为99.然后,所有这些总计随订单一起存储为文本表示,因此当您更改其sort_order时只有新订单才能看到......

如果您想添加自己的总计,我建议为其创建一个新类,以便它由默认流处理。您可以从复制,重命名和编辑任何总计开始,您可以在catalog/model/total/*.php找到前端部分和

  • admin/controller/total/*.php
  • admin/view/template/total/*.tpl
  • admin/language/english/total/*.php

用于后端部分......