это не проверено, но должно указывать правильное направление:
(OpenCart 1.4.9.x)
Сохранить это в: catalog / controller / common / 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'));
По существу использовать ту же логику, что и для обслуживанияпроверьте ... Большая разница в том, что он ищет слово "account" в строке ... Если он находит его, он позволяет отображать страницу, если нет, он перенаправляет на страницу входа ...
Используйте слово «account» вместо «login» в случае, если им нужно зарегистрироваться ... Все страницы аккаунта уже проверяют наличие входа в систему, поэтому здесь не о чем беспокоиться ...
Опять же, не проверено, чтобы выможет потребоваться настроить одну или две вещи - но это должно / может сработать, добавив код
check_login.php для 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'));
}
}
}
}
?>