在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
用于在模板文件中显示为定价详细信息。我真的很困惑如何进行计算。我想在计算中添加一些额外的数据。
答案 0 :(得分:1)
首先,加载所有总计扩展,然后对其进行排序,然后为每个扩展计算相应的价格,最后返回排序的值。我觉得有点矫枉过正,而不是3代表 - 每个循环可能代码可以改进并打包成一个(没试过,只是我的第一次猜测)。
无论如何,总计是这样的:
它们以各自的顺序显示(在管理中设置),而total
总计的sort_order为99.然后,所有这些总计随订单一起存储为文本表示,因此当您更改其sort_order时只有新订单才能看到......
如果您想添加自己的总计,我建议为其创建一个新类,以便它由默认流处理。您可以从复制,重命名和编辑任何总计开始,您可以在catalog/model/total/*.php
找到前端部分和
admin/controller/total/*.php
admin/view/template/total/*.tpl
admin/language/english/total/*.php
用于后端部分......