仅登录prestashop目录

时间:2012-04-07 07:34:46

标签: customization prestashop

我正在建立一个prestashop目录,但只有登录客户才能看到它。这可能吗。如果内置prestashop登录用于此...将是很好的..任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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知道overriden类(它将自动重新生成):

cache/class_index.php 

而且,在不覆盖核心文件的情况下实现了功能。

答案 2 :(得分:1)

这很容易。

使用此代码:

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

在indexController的预处理中

答案 3 :(得分: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的代码(在本文发布时)没有改变,所以它应该在那里工作。