PHP Opencart - 编辑订单

时间:2014-03-18 10:22:32

标签: php opencart

Goodmorning Stacks,

几天以来,我们一直在现有的网店(opencart 1.5.6)中开展直邮服务。我已经准备好了我的SOAP请求(dropshipping)以便在商店中使用,我唯一不确定的是所需方法的位置。由于您需要在确认订单之前完成付款,因此我们需要调整

catalog/controller/checkout/confirm.php

然而,当我查找此文件的代码时,我找不到任何线索放置方法的位置。 在catalog/model/checkout/order.php内,我们可以找到addOrder()方法,看起来这是一个临时订单,直到您成功完成付款并按下确认按钮。

有人可以告诉我Opencart处理订单的方式以及如何在正确的位置以正确的方式调整代码吗?

1 个答案:

答案 0 :(得分:1)

我自己刚刚完成了这项工作,虽然我知道这个问题是从不久前开始的,我认为发布我的方法会有所帮助。

我使用的方法是在单独的文件中执行一个函数,并从catalog/controller/checkout/success.php

调用它

有两种方法可以通过直接更新文件或使用vQmod来完成此操作。我不会在这里详细讨论vQmod,因为它在其他地方被广泛报道(https://code.google.com/p/vqmod/)。 后者是我的偏好,因为它不需要修改原始文件,但我将覆盖两者。

1)要直接修改文件,只需打开它,第7行就会看到

if (isset($this->session->data['order_id'])) {

在此行之后,您可以添加您的挂钩。我使用了像

这样的东西
include("catalog/controller/checkout/dropship_order.php");
sendOrderToDropship($this->session->data);

2)或者,使用以下vQmod代码即时执行相同的操作

<file name="catalog/controller/checkout/success.php" error="log">
    <operation error="skip">
    <search position="after"><![CDATA[if (isset($this->session->data['order_id'])) {]]></search>
    <add><![CDATA[
            include("catalog/controller/checkout/dropship_order.php");
            sendOrderToDropship($this->session->data);
    ]]></add>
    </operation>
</file>

这两种方法都会导致在加载成功页面时调用sendOrderToDropship函数;在该功能中,您可以执行您需要的任何操作。通过发送data数组,您还可以访问订单信息(关键的订单ID),以便您可以执行任何所需的处理。

希望有所帮助!