3

チェックアウトプロセスの開始を検出するオブザーバーがMagentoにいますか?これには、ページcheckout/onepage/またはを押すことが含まれますcheckout/onestepcheckout/。可能であれば、コントローラーのオーバーライドは避けたいと思います。

4

3 に答える 3

10

すべてのコントローラーアクションは、すべてのアクションコントローラーのスーパークラスであるMage_Core_Controller_Varien_Action(リンク)で発生する複数のターゲットイベントになります。これらのイベントには、モジュールルーター構成+コントローラーパス+アクションから派生した「フルアクション名」、および要求されているルート名がさまざまに含まれます。

標準の1ページのチェックアウトの場合、完全なアクション名はcheckout_onepage_indexであり、ルート名はcheckout_onepageです。

renderLayout():

controller_action_layout_render_before_'.$this->getFullActionName()

preDispatch():

controller_action_predispatch_' . $this->getRequest()->getRouteName() controller_action_predispatch_' . $this->getFullActionName()

postDispatch():

controller_action_postdispatch_' . $this->getRequest()->getRouteName() controller_action_postdispatch_' . $this->getFullActionName()

観察するイベントは、OneStepCheckoutモジュールがルートをキャプチャする方法によって異なります。getRouteName()ルートとモジュールを区別する必要がある場合は、ベースのイベントが役立つ場合があります。「顧客がログインしている」および「顧客がログアウトしている」シナリオをテストする必要があります。リダイレクトを含むロジックではディスパッチ前のイベントが推奨されますが、カート/見積もり+顧客セッションロジックの複製に対してニーズのバランスをとる必要があります。

于 2013-02-01T22:41:37.333 に答える
4

@controller_action_predispatch_checkout_onepage_indexイベントを見てください

Magentoの「チェックアウトに進む」イベントを参照してください。

于 2013-02-01T19:22:34.680 に答える
1

どうしてそんなに遅くしたいの?チェックする内容によっては、カートに追加してからチェックする場合がありますか?checkout_cart_save_before

于 2013-02-01T19:51:39.037 に答える