2

私は2つのシンプルな製品を扱うMagentoショップを持っています

  • グレートレッドカップ
  • グレートブルーカップ

および構成可能な製品

  • グレートカップ

それらのカップが割り当てられています。

赤と青のカップが検索で表示されます。

これらの単純な製品のいずれかをクリックすると、代わりに構成可能な製品が開かれますが、適切な色が事前に選択されている必要があります。

単純な製品を複数の構成可能な製品に割り当てることができることを認識しているため、2 つの一致する構成可能な製品が見つかった場合に例外をログに記録し、最初の製品を取得します。

カタログ/製品/ビューの発送前イベントをキャッチして、単純な製品を構成可能な製品に置き換える必要があると思います。

適切な単純な製品を事前に構成するにはどうすればよいですか?

これに対するエレガントな解決策はありますか?

4

3 に答える 3

4

私は解決策を見つけました:

  1. オブザーバーを登録するcontroller_action_predispatch_catalog_product_view
  2. 構成可能な製品である親を持つ単純な製品があるかどうかを確認します
  3. 単純な製品の構成データを含む配列を作成します
  4. このデータをMage::helper('catalog/product_view')->prepareAndRender()(第 3 パラメーター)に渡します
  5. FLAG_NO_DISPATCHon the front アクションを設定してディスパッチを停止する

完全なコードは、github の Mestrona_ForwardToConfigurable モジュールで入手できます。

于 2012-10-23T21:08:18.073 に答える
0

単純な製品がいくつかの要件を満たしている場合、構成可能な製品にリダイレクトすることが 1 つのアイデアです。

  • 新しい属性「should_redirect_to_parent」を True に設定 (オプション)
  • 少なくとも親製品を持っている (その点については、Alex のリンクをたどってもらいます)

追伸: 親製品のルックアップを行いたくない場合は、その製品で直接リダイレクトを行うために、「redirect_sku」や「redirect_product_id」などの新しい属性を追加できます。

リダイレクトにはイベントcatalog_controller_product_init_afterを使用する必要があり、前の 2 つの条件が一致する場合は、ユーザーを構成可能な製品にリダイレクトします。

ps: パフォーマンスの最適化のために、代わりに を使用できます。catalog_controller_product_init_beforeこれにより、膨大で役に立たない Product::load() を節約できますが、カスタム SQL クエリを作成して親製品を検索する必要があります。

コード例が必要かどうかを伝える

于 2012-10-18T18:51:00.937 に答える