1

私はMage_Catalog_Block_Layer_Viewmagentoでオーバーライドしようとしています。をオーバーライドしようとしましたMage_Catalog_Block_Layer_Stateが、正常に動作していますが、layer_view書き換えは行われません。これはバグですか?

<global>
    <blocks>
        <catalog>
            <rewrite>
                <layer_view>Mymodule_Catalog_Block_Layer_View</layer_view>
            </rewrite>
        </catalog>
    </blocks>
</global>


<global>
    <blocks>
        <catalog>
            <rewrite>
                <layer_state>Mymodule_Catalog_Block_Layer_State</layer_state>
            </rewrite>
        </catalog>
    </blocks>
</global>

私を助けてください。私は何時間も試しています

4

3 に答える 3

5

それを診断する最善の方法は、クラス名の書き換えを自分で確認することです。で./demo.php

<?php

ini_set('display_errors',true);
error_reporting(E_ALL | E_STRICT);

include 'app/Mage.php';
Mage::setIsDeveloperMode(true);
Mage::app();

$layer = Mage::getConfig()->getBlockClassName('catalog/layer_view');

var_dump($layer);

コア ブロックのクラス名ではなく、カスタム モジュール ブロックのクラス名が返されるはずです。その場合は、手順を追って問題の内容を特定する必要があります。このブロックは、他のいくつかのブロック インスタンスと高度に結合されており、操作が面倒な場合があります。

また、Mage_CatalogSearchモジュールにはlayer_viewブロックから拡張されたMage_Catalog layer_viewブロックがあり、オーバーライドを使用しないことに注意してください。

于 2012-06-25T15:19:01.857 に答える
1

.phtml で使用されているクラスを見つけるための最良の方法が含まれてecho get_class($this)います。

Enterprise エディションを使用しているため、レイヤード ナビゲーションは Mage_Catalog_Block_Layer_View を使用していません。代わりに、Enterprise_Search_Block_Catalog_Block_Layer_View クラスを使用します。

そのクラスをオーバーライドすると、すべてが整理されました。

于 2013-03-21T08:02:49.413 に答える