覆盖Mage_Catalog_Block_Layer_View是magento中的一个错误?

Ana*_*iga 1 magento

我试图覆盖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>
Run Code Online (Sandbox Code Playgroud)

请帮帮我.我几个小时都在尝试

ben*_*rks 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);
Run Code Online (Sandbox Code Playgroud)

您应该看到返回的自定义模块块类名而不是核心块类名.如果是这种情况,那么您需要逐步确定问题所在.这个块与其他几个块实例高度耦合,可能很难处理.

另请注意,Mage_CatalogSearch模块有一个layer_viewMage_Catalog layer_view块延伸的块,它不会使用您的覆盖.