我正在构建一个 prestashop 目录,但它只需要对登录的客户可见。这可能吗。如果为此使用内置的 prestashop 登录,那就太好了。任何帮助表示赞赏。
问问题
4232 次
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 回答