1

我正在为 opencart 2.3 开发一个扩展。当客户来到结帐/成功页面时,我想检索订单 ID。这是我在扩展程序中的代码?

if(isset($this->request->get['route']) && $this->request->get['route'] == "checkout/success")
{
  if (isset($this->session->data['order_id']) && (!empty($this->session->data['order_id']))) 
     { $order_id = $this->session->data['order_id']; ... }
}

我知道这不起作用,因为我unset($this->session->data['order_id']);\catalog\controller\checkoutsuccess.php.

任何人都可以在不涉及主要文件的情况下帮助我opencart吗?

4

1 回答 1

0

我有一个免费的 vqMod 扩展来做这件事。它位于https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=18125

注意:要使用 vqMod 扩展,您必须首先安装 vqMod for OpenCart。此处提供详细信息和说明:https ://github.com/vqmod/vqmod/wiki/Installing-vQmod-on-OpenCart

您必须在清除此值之前将其保存(如您所述),然后您可以稍后显示它。这就是我的模组所做的。

逻辑:

<file name="catalog/language/en-gb/checkout/success.php">
        <operation info="Add language string">

                <search position="after"><![CDATA[
                // Text
                ]]></search>

                <add><![CDATA[
                $_['text_order']   = 'Your order ID is %s.';
                ]]></add>

        </operation>
</file>
<file name="catalog/controller/checkout/success.php">
        <operation info="Save Order ID">

                <search position="after"><![CDATA[
                 if (isset($this->session->data['order_id'])) {
                ]]></search>

                <add><![CDATA[
                $this->session->data['last_order_id'] = $this->session->data['order_id'];
                ]]></add>

        </operation>
</file>
<file name="catalog/controller/checkout/success.php">
        <operation info="Output Order ID">

                <search position="before"><![CDATA[
                $data['button_continue']
                ]]></search>

                <add><![CDATA[
                $data['text_message'] .= sprintf($this->language->get('text_order'),  $this->session->data['last_order_id']);
                ]]></add>

        </operation>
</file>
于 2017-06-20T22:20:17.947 回答