2

残念ながら、私の手に負えない状況のため、次の構成を機能させる必要があります。

Alice はユーザー名 foo で Customer としてログインします。

次に、ボブは別のブラウザーで同じ顧客 (foo) としてログインします。

Alice と Bob はそれぞれ別々のショッピング カートを持っています。Alice がブラウザでカートに何かを追加しても、Bob のカートは影響を受けません。

Magento のデフォルト設定では、Alice と Bob はサーバーに保存されている 1 つのカートを共有するため、カートはそれらの間で同期されます。Magento のセッションを必要な方法で強制的に動作させる方法はありますか?

編集: 返信ありがとうございます!アランの答えのヒントをいくつか調べた後、私の質問の核心は、ユーザーではなくセッションに適用するために引用符を作成できるかどうかだと思います。

ログインイベントにフックして、次のようなことを行うことはできますか?

Mage::getSingleton('checkout/session')->setQuoteId(null);

他のブラウザにログインしているユーザーのカートを保持したままにしますか?

4

2 に答える 2

2

これは非常に奇妙な使用例ですが、カートの制限ほど「セッション」に関連していないようです。ユーザーごとに複数のカートをサポートする場合は、新しい機能を作成する必要があるようです。UI の変更やシステム全体のその他の変更を含める必要がある機能。異なるブラウザー (おそらく異なるデバイス) でサイトに合法的にログインし、同じショッピング カートを表示したいユーザーを混乱させないようにします。

したがって、カートの動作を変更するだけでなく、より深いレベルでこれについて考える必要がある場合は、ベース アプリケーションの機能を変更することと考えてください。

于 2013-05-03T17:57:33.033 に答える
2

これを可能にするターンキー拡張機能やクックブック ソリューションは見たことがありません。StackExchange Magento サイトでこの質問をしてみてください。プログラミング以外の質問はこちらで大歓迎です。

この機能をビルド/プログラミングする場合、私の一般的なアプローチは次のようになります。

  1. 顧客のログイン後に発生するイベントを見つけて、このイベントのオブザーバーをセットアップします

  2. sales/quoteオブザーバーで、オブジェクト (つまり、sales_flat_quoteテーブル) を使用してログインしたばかりのユーザーの最後の未変換の「カート」を見つけます。

  3. 次に、引き続きオブザーバーでsetQuoteId、カート セッションのメソッドを使用して、この古い見積もりを現在の見積もりにします。

上記は問題に対する素朴なアプローチです — Magentoの永続的なカート機能が上記でうまく機能するかどうかはわかりませんが、見つけるための最速の方法は、何かを実装し、テストし、反復することです。

これは単純な解決策ではありません。この機能が生死にかかわるビジネス要件でない限り、この機能は省略します。

于 2013-05-03T18:44:47.590 に答える