チェックアウトプロセスの開始を検出するオブザーバーがMagentoにいますか?これには、ページcheckout/onepage/
またはを押すことが含まれますcheckout/onestepcheckout/
。可能であれば、コントローラーのオーバーライドは避けたいと思います。
3 に答える
すべてのコントローラーアクションは、すべてのアクションコントローラーのスーパークラスである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()
ルートとモジュールを区別する必要がある場合は、ベースのイベントが役立つ場合があります。「顧客がログインしている」および「顧客がログアウトしている」シナリオをテストする必要があります。リダイレクトを含むロジックではディスパッチ前のイベントが推奨されますが、カート/見積もり+顧客セッションロジックの複製に対してニーズのバランスをとる必要があります。
@controller_action_predispatch_checkout_onepage_index
イベントを見てください
Magentoの「チェックアウトに進む」イベントを参照してください。
どうしてそんなに遅くしたいの?チェックする内容によっては、カートに追加してからチェックする場合がありますか?checkout_cart_save_before