我正在建立一个prestashop目录,但只有登录客户才能看到它。这可能吗。如果内置prestashop登录用于此...将是很好的..任何帮助表示赞赏。
答案 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的代码(在本文发布时)没有改变,所以它应该在那里工作。