0

我正在构建一个 prestashop 目录,但它只需要对登录的客户可见。这可能吗。如果为此使用内置的 prestashop 登录,那就太好了。任何帮助表示赞赏。

4

4 回答 4

2

我有一个建议。您可以使用 PrestaShop 1.5 中的客户组功能,并且只允许登录的客户查看价格。对于在访客中分组的每个客户,他们会在目录模式下看到您的网站。

于 2012-12-11T16:59:14.253 回答
2

Prestashop 1.5 解决方案:

只需上传原始文件:

classes\controller\FrontController.php

进入:

override/classes/controller/FrontController.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=my-account');
        }
    }
}

最后一步是手动删除以下文件,以便 prestashop 知道被覆盖的类(它将自动重新生成):

cache/class_index.php 

瞧,无需覆盖核心文件即可实现功能。

于 2014-03-25T12:14:16.933 回答
1

这会很容易。

使用此代码:

 if(!self::$cookie->isLogged(true) AND in_array($this->step, array(1, 2, 3)))
    Tools::redirect('authentication.php');

在您的 indexController 的预处理中

于 2012-04-16T12:29:28.140 回答
1

这是我的解决方案,它就像一个魅力,而且很容易解决!

在 classes\Configuration.php (大约第 114 行)中,它看起来像这样

static public function get($key, $id_lang = NULL)
{
    if ($id_lang AND isset(self::$_CONF_LANG[(int)$id_lang][$key]))
        return self::$_CONF_LANG[(int)$id_lang][$key];
    elseif (is_array(self::$_CONF) AND key_exists($key, self::$_CONF))
        return self::$_CONF[$key];
    return false;
}

将其更改为:

static public function get($key, $id_lang = NULL)
{
    //Grab access to the $cookie which is already loaded in the FrontController as global $cookie;
    global $cookie;
    if ($id_lang AND isset(self::$_CONF_LANG[(int)$id_lang][$key]))
        return self::$_CONF_LANG[(int)$id_lang][$key];
    elseif (is_array(self::$_CONF) AND key_exists($key, self::$_CONF))
        //If the system is trying to find out if Catalog Mode is ON, then return the configuration setting,
        //but override it with the user logon status
        if($key == 'PS_CATALOG_MODE')
        {
            return !$cookie->logged || self::$_CONF[$key];
        }
        else
        {
            return self::$_CONF[$key];
        }
    return false;
}

本质上,我想强制系统在用户未登录时显示“目录模式”,并在用户登录时将其关闭。

我可以保证这适用于 v1.4.3.0 并且当前版本 1.4.8.2 的代码(在本文发布时)没有改变,所以它应该在那里工作。

于 2012-07-02T10:06:25.093 回答