2012-04-07 5 views
0

Im создает каталог prestashop, но он должен быть доступен только для зарегистрированных пользователей. Это возможно. Было бы неплохо, если для этого используется встроенный вход в систему preashop. Любая помощь приветствуется.Только каталог prestashop

+0

это может работать дорого, хотя :([link] (http://www.presto-changeo.com/ru/prestashop-modules/30-private-shop.html) – rashid

ответ

1

Это будет легко.

Используйте этот код:

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

В предобработки вашего IndexController

+0

спасибо, получил его работу без in_array() часть, w, что это означает кстати? – rashid

+0

еще одна вещь, это работает только тогда, когда клиент посещает домашнюю страницу, а все остальные страницы просматриваются по прямой ссылке – rashid

1

Вот мое решение, оно работает как шарм, и это очень легко исправить!

В классах \ 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 (навремя этого сообщения) не изменилось, поэтому он должен там работать.

+0

большое спасибо, более раннее решение работает только для индекса/дома страница, помещая ее в конфигурацию, имеет больше смысла! – rashid

+0

Я хочу взять людей на authentic.php, если они не вошли в систему, а не показывать режим каталога или что-то еще до входа в систему. – rashid

+0

Отличный ответ! Спасибо за обмен. – JazZ

2

У меня есть предложение. Вы можете использовать функцию «Группы клиентов» в PrestaShop 1.5 и разрешать только зарегистрированным клиентам видеть цены. Для каждого Клиента, который сгруппирован в Visitor, они будут видеть ваш сайт в режиме каталога.

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 

И voilà, функциональность достигнута без перезаписи файлов ядра.