Prestashop 先登录
Prestashop Login First
我使用最新的prestashop 1.6.1.4
,我希望每个客户首先登录网站,然后他们可以访问网站的所有页面,没有登录用户不能在网站上做任何事情。
所以,我想知道 backoffice
端有任何配置,如果 是 那么该怎么做?
后台没有这样的配置。您只能通过为商店开发自定义模块来实现此目的,该模块使用在所有页面上调用的挂钩(hookDisplayHeader 或 hookDisplayTop 等)
如果您不想为此创建模块,那么您也可以通过覆盖 FrontController.php 来实现相同的目的,因为它在 PrestaShop 的每个页面上都会被调用。
没有内置函数可以执行此操作,但您可以轻松覆盖 FrontController 来实现此行为。
将此代码放入 /override/classes/controller/FrontController.php
:
<?php
class FrontController extends FrontControllerCore
{
public function init()
{
parent::init();
if (!$this->context->customer->isLogged() && $this->php_self != 'authentication' && $this->php_self != 'password')
{
Tools::redirect('index.php?controller=authentication?back=index');
}
}
}
如果用户不在身份验证页面或忘记密码页面上,他将被重定向到身份验证页面。登录后,他将被重定向到主页。
编辑:
如果文件 FrontController.php
不存在,您将必须创建它并删除文件 /cache/class_index.php
。 class_index
缓存您网站上的每个 类 路径。因此,如果您创建了一个新的 Class 文件,您需要将其删除以让 Prestashop 搜索新创建的文件。
我使用最新的prestashop 1.6.1.4
,我希望每个客户首先登录网站,然后他们可以访问网站的所有页面,没有登录用户不能在网站上做任何事情。
所以,我想知道 backoffice
端有任何配置,如果 是 那么该怎么做?
后台没有这样的配置。您只能通过为商店开发自定义模块来实现此目的,该模块使用在所有页面上调用的挂钩(hookDisplayHeader 或 hookDisplayTop 等)
如果您不想为此创建模块,那么您也可以通过覆盖 FrontController.php 来实现相同的目的,因为它在 PrestaShop 的每个页面上都会被调用。
没有内置函数可以执行此操作,但您可以轻松覆盖 FrontController 来实现此行为。
将此代码放入 /override/classes/controller/FrontController.php
:
<?php
class FrontController extends FrontControllerCore
{
public function init()
{
parent::init();
if (!$this->context->customer->isLogged() && $this->php_self != 'authentication' && $this->php_self != 'password')
{
Tools::redirect('index.php?controller=authentication?back=index');
}
}
}
如果用户不在身份验证页面或忘记密码页面上,他将被重定向到身份验证页面。登录后,他将被重定向到主页。
编辑:
如果文件 FrontController.php
不存在,您将必须创建它并删除文件 /cache/class_index.php
。 class_index
缓存您网站上的每个 类 路径。因此,如果您创建了一个新的 Class 文件,您需要将其删除以让 Prestashop 搜索新创建的文件。