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.phpclass_index 缓存您网站上的每个 类 路径。因此,如果您创建了一个新的 Class 文件,您需要将其删除以让 Prestashop 搜索新创建的文件。