2012-04-07 2 views
0

Im 사전 설치 카탈로그를 작성하고 있지만 로그인 한 고객 만 볼 수 있어야합니다. 이것이 가능한가. prestashop 로그인이 내장되어 있으면 좋을 것입니다. 어떤 도움을 주시면 감사하겠습니다.로그인 전용 사전 시작 카탈로그

+0

이것은 비싸지 만 작동 할 수도 있습니다. ([link] (http://www.presto-changeo.com/en/prestashop-modules/30-private-shop.html) – rashid

답변

1

쉬울 것입니다.

사용이 코드 : 당신의 인 IndexController의 전처리에

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

+0

감사합니다. in_array없이 작동합니다.() 부분, w btw는 무엇을 의미합니까? – 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

로그인하지 않은 사람은 authentication.php로 이동하고 로그인 할 때까지 카탈로그 모드 나 아무것도 표시하지 않으려합니다. – rashid

+0

좋은 답변입니다. 공유 해 주셔서 감사합니다. – JazZ

2

제안이 있습니다. PrestaShop 1.5의 고객 그룹 기능을 사용하면 로그인 한 고객 만 가격을 볼 수 있습니다. 방문자로 그룹화 된 모든 고객의 경우 귀하의 웹 사이트가 카탈로그 모드로 표시됩니다.

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 버전이 오버라이드 (override) 클래스 (그것은 자동으로 다시 생성됩니다) 인식 때문에 수동으로 다음 파일을 삭제하는 것입니다 :

cache/class_index.php 

그리고 보일 라, 코어 파일을 덮어 쓰지 않고도 기능을 수행 할 수 있습니다.

관련 문제