1

わかりました、これはまったく理解できません。検索しましたが、何も見つかりません。アカウントセクションに新しいページを追加するための最良の方法は何ですか。サポートチケットシステムをMagentoアカウントページに統合しようとしています。つまり、この機能を使用するには、ユーザーがログインして登録する必要があります。cmsページとカスタムページレイアウトを使用してこれを機能させることができます。しかし、ログインしたユーザーに対してのみ機能するようにこのカスタムcmsページを設定するにはどうすればよいですか?

また、このようにすると、アカウントメニューではなく、カテゴリメニューが表示されます。アカウントメニューを代わりに表示するにはどうすればよいですか?またはこれを行うためのより良い方法はありますか?私はmagentoに不慣れで、本当に立ち往生していて、これを理解できないので、助けていただければ幸いです。

私はmagento1.7.0.2コミュニティエディションを実行しています。

4

3 に答える 3

1

私があなたを正しく理解している場合は、顧客がログインしているかどうかを確認してください。ただし、PHPを使用するには、テプレーティングシステムを使用してモジュールを作成するか、独自の「スタンドアロンページ」を生成する必要があります。モジュールルートに移動します。

if ($this->helper('customer')->isLoggedIn()){
   //show page contents or do whatever  .. 
}
else{
header( 'Location: http://www.yoursite.com/customer/account/login/' ) ;
}

必要なのはそれだけです。スタンドアロンルートを使用する場合:

//LOAD MAGENTO
require_once 'YOUR_PATH_TO_MAGENTO/app/Mage.php';
umask(0);
Mage::app('YOUR_WEBSITE_CODE', 'website');

//GET SESSION DATA
Mage::getSingleton('core/session', array('name'=>'frontend'));
$session = Mage::getSingleton('customer/session', array('name'=>'frontend'));
$customer_data = Mage::getModel('customer/customer')->$session->id);

//CHECK IF LOGGED IN
if($session->isLoggedIn()){
echo 'Welcome ' . $customer_data->firstname . " " . $customer_data->lastname;
} else {
echo "Access Denied: Sorry, but this page is for registered members only.";
exit;
}

お役に立てば幸い

于 2013-03-19T01:53:28.283 に答える
-1

どのアクションにも、コントローラーとアクション機能があります。

したがって、新しい機能では、アクションを定義します。このアクション値がURLに含まれていることを確認してください。

次に、コントローラー内にこのアクション関数を追加します

myAction()
{
    if ($this->helper('customer')->isLoggedIn()){
   //show page contents or do whatever  .. 
    }
    else{
    header( 'Location: http://www.yoursite.com/customer/account/login/' ) ;
    }
}  
于 2013-03-19T04:35:07.227 に答える
-1

上記の両方の回答で投稿された質問には十分かもしれませんが、メモとしては、Magentoを使用する正しい方法ではないことは確かです。これは、Magentoのプラクティスに従ってどのように達成できるかをよりよく理解していると思います。Alan Stormのこのチュートリアルは素晴らしい場所ですが、そのブログのpreDispatchメソッドに問題があり、より良い代替手段になると思います。

public function preDispatch() {
        parent::preDispatch();
        if (!Mage::getSingleton('customer/session')->authenticate($this)) {
                $this->setFlag('', 'no-dispatch', true);
        }
    }

ここからもらった。アランのブログでは、顧客がすでにログインしていてカスタムアカウントページにアクセスしようとすると、ホームページにリダイレクトされます(私の場合はそうしました)。

于 2014-08-01T09:26:27.137 に答える