opencart停止查看索引页面,直到登录

时间:2011-10-13 13:16:55

标签: php mysql opencart

我在一个项目中使用opencart,

每件事情都运转正常,但我无法找到停止查看主页的选项,直到登录。

实际上这是项目要求,在登录前没有人能看到回家。

有没有办法用OPEN CART做到这一点?

由于

3 个答案:

答案 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