Php opencart如何使用扩展计算价格

Php opencart如何使用扩展计算价格,php,opencart,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_c

在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
将作为定价详细信息显示在模板文件中。我真的搞不懂计算是怎么进行的。我想在计算中添加一些额外的数据。

首先,加载所有totals扩展名,然后进行排序,然后计算每个扩展名对应的价格,最后返回排序后的值。我想这有点过分了,因为可能代码可以改进,而不是每个周期3个(没有尝试,只是我的第一个猜测)

总之,总数如下所示:

  • 小计
  • 大桶
  • 息票
  • 船运
  • 总数
它们以各自的顺序显示(在管理中设置),而
total
total的排序顺序为99。然后,所有这些总计将与订单一起存储为文本表示形式,因此,当您更改其排序顺序时,这将仅在新订单中可见

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

  • admin/controller/total/*.php
  • admin/view/template/total/*.tpl
  • admin/language/english/total/*.php
对于后端部分