我在一个项目中使用opencart,
每件事情都运转正常,但我无法找到停止查看主页的选项,直到登录。
实际上这是项目要求,在登录前没有人能看到回家。
有没有办法用OPEN CART做到这一点?
由于
答案 0 :(得分:1)
我知道没有任何内置内容,但你可以自己做。根据您对@ CarpeNoctumDC的问题的答案,您可能需要进行一些挖掘,但这应该可以让您开始:
<强>系统/库/ customer.php 强>
public function isLogged() { ... }
<强>目录/控制器/通用/ home.php 强>
if (!$this->customer->isLogged()) {
// login page
exit;
}
答案 1 :(得分:1)
这是未经测试的,但应指向正确的方向:
(OpenCart 1.4.9.x)
将此保存到: 目录/控制器/通用/ check_login.php
<?php
class ControllerCommonCheckLogin extends Controller {
public function index() {
if (!$this->customer->isLogged()) {
// Require to be logged in
$ignore = array(
'account', 'payment'
);
$match = false;
if (isset($this->request->get['route'])) {
foreach ($ignore as $i) {
if (strpos($this->request->get['route'], $i) !== false) {
$match = true;
break;
}
}
}
// Show site if logged in as admin
$this->load->library('user');
$this->registry->set('user', new User($this->registry));
if (!$this->user->isLogged() && !$match) {
return $this->forward('account/login');
}
}
}
}
?>
编辑/index.php
查找
// Maintenance Mode
$controller->addPreAction(new Action('common/maintenance/check'));
添加后:
// Login Check
$controller->addPreAction(new Action('common/check_login'));
基本上使用与维护检查相同的逻辑...最大的区别是它在字符串中查找“帐户”一词...如果找到它则允许显示页面,如果不是,则重定向到登录页面......
如果需要注册,请使用“帐户”一词而不是“登录”...所有帐户页面都已经检查了登录名,所以不用担心......
同样,未经测试,因此您可能需要调整一两件事 - 但它应该/可能通过放入代码来工作
check_login.php for opencart 1.5.3
<?php
class ControllerCommonCheckLogin extends Controller {
public function index() {
// Require to be logged in
if (!$this->customer->isLogged()) {
// Require to be logged in
$ignore = array(
'account','payment'
);
$match = false;
if (isset($this->request->get['route'])) {
foreach ($ignore as $i) {
if (strpos($this->request->get['route'], $i) !== false) {
$match = true;
break;
}
}
}
// Show site if logged in as admin
$this->load->library('user');
$this->user = new User($this->registry);
if (!$this->user->isLogged() && !$match) {
$this->redirect($this->url->link('account/login'));
}
}
}
}
?>
答案 2 :(得分:0)
正确的方法是打开
/catalog/controller/common/home.php
在代码顶部找到public function index() {
,然后在
if(!$this->customer->isLogged()) {
$this->session->data['redirect'] = $this->url->link('common/home');
$this->url->redirect('account/login', '', 'SSL');
}
如果您不确定如何正确执行此操作,请查看public function index() {
之后的前几行
/catalog/controller/account/account.php
将家庭控制器中的代码设置为common/home
代替account/account