我正在为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
主文件的情况下帮助我吗?
答案 0 :(得分: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
您必须在清除之前保存此值(如您所述),然后您可以稍后显示它。那是我的mod所做的。
逻辑:
<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>