2012-04-07 15 views
0

Im prestashopカタログを作成していますが、ログインした顧客だけが見る必要があります。これは可能ですか?これは、組み込みのprestashopログインがこのために使用されている場合はいいです..どんな助けもありがとうございます。ログインのみprestashopカタログ

+0

これは高価なしかし働くかもしれません:([リンク](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 – rashid

+0

もう1つ、これは顧客がホームページにアクセスし、他のすべてのページが直接リンクを介して訪問した場合にのみ有効です – 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ソリューション:クラスの名前を変更し、

override/classes/controller/FrontController.php 

次へ:へ

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 

そして、コアファイルを上書きせずに機能を実現しました。

関連する問題