0

AJAX でロードできるさまざまな種類の製品を表示するためのカスタム モジュールを作成しています。

だから私はブロックによって移入されたhtmlをエコーする私のコントローラメソッドの1つを呼び出しています。それは大丈夫です...

この問題は、製品の [比較に追加] リンクの後に Magento が、モジュールが追加されたページではなく、最後に呼び出されたコントローラー メソッドにリダイレクトされたときに発生します。

addAction() を上書きする代わりに、この動作を修正する適切な方法はありますか?

ありがとう!

4

1 に答える 1

1

postDispatchこれは、比較コントローラーにフックするオブザーバーを介して行うことができます。独自のモジュールを作成します。次のファイルで呼び出しましょうEasylife_Compare:
app/etc/modules/Easylife_Compare.xml- 宣言ファイル

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Compare>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Catalog />
            </depends>
        </Easylife_Compare>
    </modules>
</config>

app/code/local/Easylife/Compare/etc/config.xml- 構成ファイル

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Compare>
            <version>0.0.1</version>
        </Easylife_Compare>
    </modules>
    <global>
        <models><!-- declar your own models-->
            <easylife_compare>
                <class>Easylife_Compare_Model</class>
            </easylife_compare>
        </models>
    </global>
    <frontend>
        <events>
            <controller_action_postdispatch_catalog_product_compare_add><!-- observe the post dispatch for adding to compare list -->
                <observers>
                    <easylife_compare>
                        <model>easylife_compare/observer</model>
                        <method>stopRedirect</method>
                    </easylife_compare>
                </observers>
            </controller_action_postdispatch_catalog_product_compare_add>
        </events>
    </frontend>
</config>

app/code/local/Easylife/Compare/Model/Observer.php- あなた自身のオブザーバー

<?php
class Easylife_Compare_Model_Observer{
    public function stopRedirect($observer){
        //get the real referrer from server var
        $referrer = Mage::app()->getRequest()->getServer('HTTP_REFERER');
        if ($referrer){
            //set your new redirect
            Mage::app()->getResponse()->setRedirect($referrer);
        }
        return $this;
    }
}

キャッシュをクリアして、試してみてください。これは、ajaxによって取得された製品がなくても、「通常の」バージョンで機能するはずです。

于 2013-07-24T14:09:30.010 に答える