Почему цена фильтра блочного слоя каталога Mage не переопределяется на живом сайте?


Я работаю с Magento EE 1.12.0.0

В одном из моих модулей я переопределил Mage_Catalog_Block_Layer_Filter_Price, и он отлично работает на моем локальном хостинге, но когда я устанавливаю тот же модуль на своем живом сайте, он не работает.

Это означает

Все файлы переопределяются, за исключением "royal_filters_block_catalog_layer_filter_price", который расширяет Mage_Catalog_Block_Layer_Filter_Price

маг_каталог_блок_слоя_фильтра_цена

Моя конфигурация файл:

<global>
...
<blocks>
        <catalog>
            <rewrite>
                <layer_state>Royal_Filters_Block_Catalog_Layer_State</layer_state>
                <layer_view>Royal_Filters_Block_Catalog_Layer_View</layer_view>
                <product_list_toolbar>Royal_Filters_Block_Catalog_Product_List_Toolbar</product_list_toolbar>
                <layer_filter_attribute>Royal_Filters_Block_Catalog_Layer_Filter_Attribute</layer_filter_attribute>
                <layer_filter_price>Royal_Filters_Block_Catalog_Layer_Filter_Price</layer_filter_price>
            </rewrite>
        </catalog>
...
</blocks>
...
</global>

Все остальные четыре класса переопределены, но не последний.

Также другие мои модули работают хорошо и нормально.

Мой живой сайт точно такой же, как и на моем локальном хостинге.

Но все еще живой сайт
использует Mage_Catalog_Block_Layer_Filter_Decimal. могу ли я переопределить Mage_Catalog_Block_Layer_Filter_Decimal вместо Mage_Catalog_Block_Layer_Filter_Price, это будет работать?

Author: Shathish, 2013-06-19

3 answers

Убедитесь, что вы правильно написали имя файлов и папок. Royal/Filters/Block/Catalog/Layer/Filter/Price.php. Если ваш локальный компьютер находится в Windows (то есть имена файлов не чувствительны к регистру), а веб-сайт работает в Linux (чувствителен к регистру), у вас могут возникнуть проблемы такого рода. Проверьте также папки журналов. Также проверьте, есть ли другое расширение, переопределяющее тот же блок.
[ РЕДАКТИРОВАТЬ]
В Magento EE есть набор блоков для фильтра слоев. Возможно, один из них используется в вашем случае. Вот пример: Enterprise_Search_Model_Catalog_Layer_Filter_Price.
Активировать подсказки пути к шаблону также содержат имена классов блоков, и посмотрите, какой тип блока используется для отображения ценового фильтра.

 1
Author: Marius, 2013-06-19 10:32:35

Вполне возможно, у вас есть расширение на удаленном хосте, которого у вас нет локально, и это расширение также переопределяет Mage_Catalog_Block_Layer_Filter_Price.

В этом случае решением (хотя и не совсем приятным) может быть расширение класса этого расширения.

 0
Author: user487772, 2013-06-19 09:46:13

На самом деле мой живой сайт использует Mage_Catalog_Block_Layer_Filter_Decimal для ценового фильтра, поэтому переопределил этот класс, чтобы достичь того, что мне нужно.

Мой config.xml

<global>
...
<blocks>
        <catalog>
            <rewrite>
                <layer_state>Royal_Filters_Block_Catalog_Layer_State</layer_state>
                <layer_view>Royal_Filters_Block_Catalog_Layer_View</layer_view>
                <product_list_toolbar>Royal_Filters_Block_Catalog_Product_List_Toolbar</product_list_toolbar>
                <layer_filter_attribute>Royal_Filters_Block_Catalog_Layer_Filter_Attribute</layer_filter_attribute>
                <layer_filter_decimal>Royal_Filters_Block_Catalog_Layer_Filter_Decimal</layer_filter_decimal>
            </rewrite>
        </catalog>
...
</blocks>
...
</global>

И я расширяю Mage_Catalog_Block_Layer_Filter_Decimal в своем блоке

 0
Author: Shathish, 2013-07-11 07:53:54