如何在opencart中处理自定义购买后操作,而无需修改核心代码?
事件'post.order.add'在付款前被调用,我在付款完成后找不到任何东西:(最重要的行动缺失
答案 0 :(得分:5)
我可以想到两种方式:
1)您可以使用事件post.order.history
,然后检查历史记录行数以确定是否应用操作。如果只有一个表明该订单刚刚被确认。像这样:
$this->load->model('account/order');
if (count($this->model_account_order->getOrderHistories($order_id)) <= 1) {
// do stuff
}
您可以使用其他标志来决定是否触发操作 - 重点是您只需要一个可以依赖的条件,因为此操作是在付款确认时触发的和之后每个其他订单历史记录都会更新。
2)使用vQmod并将某些内容应用于success.php
控制器。 Install vQmod并构造一个xml文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<modification>
<id>Order Success Event</id>
<version>1.0</version>
<vqmver>2.4</vqmver>
<author>johndoe@example.com</author>
<file name="catalog/controller/checkout/success.php">
<operation>
<search position="after"><![CDATA[public function index()]]></search>
<add><![CDATA[
// Things to do after order success event
]]></add>
</operation>
</file>
</modification>