登录后Opencart登录到上一个查看过的页面?
任何人都知道可以做到这一点的方法吗?使用版本 1.5.4
希望有人可以建议/帮助!
谢谢!
要实现此场景:
您将不得不编辑catalog/controller/account/login.php
控制器。在该public function index() {
行之后添加:
if(!isset($this->session->data['login_redirect'])
&& (strpos($_SERVER['HTTP_REFERER'], HTTP_SERVER) !== false
|| strpos($_SERVER['HTTP_REFERER'], HTTPS_SERVER) !== false)) {
$this->session->data['login_redirect'] = $_SERVER['HTTP_REFERER'];
}
请注意$_SERVER['HTTP_REFERER']
可能不包含任何 URL,具体取决于所使用的 HTTP 服务器和/或浏览器,因此这可能不会一直有效(并且没有其他机会检索用户来自的 URL)。
现在在同一个文件中找到该行:
$this->redirect($this->url->link('account/account', '', 'SSL'));
(应该是第 59 行,我的版本是 1.5.5.1)并将其更改为:
if(!empty($this->session->data['login_redirect'])) {
$url = $this->session->data['login_redirect'];
unset($this->session->data['login_redirect']);
$this->redirect($url);
} else {
$this->redirect($this->url->link('account/account', '', 'SSL'));
}
这在大多数情况下应该有效。
感谢上面 shadyyx 的回答。我没有足够的代表权来投票,所以我在这里发布我的 vQmod 代码以表示感谢。
请注意,下面的代码替换了所有 3 个实例,$this->redirect($this->url->link('account/account', '', 'SSL'))
因为仅替换第一个实例对我不起作用(尚未经过详尽测试)。
<?xml version="1.0" encoding="UTF-8"?>
<modification>
<id>Login Redirects (to where user was prior to login)</id>
<version>1</version>
<vqmver>2.4.1</vqmver>
<author>Salad_Dressing (with help from shadyyx)</author>
<file name="catalog/controller/account/login.php">
<operation>
<search position="after"><![CDATA[
public function index() {
]]></search>
<add><![CDATA[
if(!isset($this->session->data['login_redirect']) && (strpos($_SERVER['HTTP_REFERER'], HTTP_SERVER) !== false || strpos($_SERVER['HTTP_REFERER'], HTTPS_SERVER) !== false)) {
$this->session->data['login_redirect'] = $_SERVER['HTTP_REFERER'];
}
]]></add>
</operation>
<operation>
<search position="replace"><![CDATA[
$this->redirect($this->url->link('account/account', '', 'SSL'));
]]></search>
<add><![CDATA[
if(!empty($this->session->data['login_redirect'])) {
$url = $this->session->data['login_redirect'];
unset($this->session->data['login_redirect']);
$this->redirect($url);
} else {
$this->redirect($this->url->link('account/account', '', 'SSL'));
}
]]></add>
</operation>
</file>
</modification>