Переписывание модели, которая уже была переписана
Я прочитал около десяти разных мест (в основном ответы на Magento stack exchange) о том, как переписать модель, которая уже была переписана, но не может заставить мой модуль работать. Я использовал расширение "Детектор конфликтов модулей", чтобы попытаться устранить проблему, но безуспешно.
Итак, мой модуль переписывает модель из другого модуля, который переписывает основную модель.
Соответствующая часть другого модуля config.xml :
(путь к файлу /app/code/local/GoMage/Navigation/etc/config.xml)
<?xml version="1.0" encoding="utf-8"?>
<config>
<modules>
<GoMage_Navigation>
<version>3.2</version>
</GoMage_Navigation>
</modules>
<global>
<models>
<catalog>
<rewrite>
<layer_filter_item>GoMage_Navigation_Model_Layer_Filter_Item</layer_filter_item>
</rewrite>
</catalog>
</models>
</global>
</config>
Мой config.xml :
(путь к файлу /app/code/local/OOTD/Navigation/etc/config.xml)
<?xml version="1.0" encoding="utf-8"?>
<config>
<modules>
<OOTD_Navigation>
<version>0.1</version>
</OOTD_Navigation>
</modules>
<global>
<models>
<catalog>
<rewrite>
<layer_filter_item>OOTD_Navigation_Model_Layer_Filter_Item</layer_filter_item>
</rewrite>
</catalog>
</models>
</global>
</config>
/app/etc/modules/OOTD_Navigation.xml :
<?xml version="1.0" encoding="utf-8"?>
<config>
<modules>
<OOTD_Navigation>
<active>true</active>
<codepool>local</codepool>
<depends>
<GoMage_Navigation />
</depends>
</OOTD_Navigation>
</modules>
</config>
/app/code/local/OOTD/Navigation/Model/Layer/Filter/Item.php :
class OOTD_Navigation_Model_Layer_Filter_Item extends GoMage_Navigation_Model_Layer_Filter_Item {
// ...
}
Я перепробовал так много вещей, что больше не знаю, что делать. Если вам нужна дополнительная информация, просто спросите. Заранее спасибо.
2 answers
codepool
чувствителен к регистру и должен быть codePool
Это должно работать так, как вы это делаете, это выглядит абсолютно правильно. Не могли бы вы добавить файл"text.php "со следующим содержимым в вашей папке "оболочка" под корневой папкой Magento?
<?php
require_once('../app/Mage.php');
umask(0);
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$item = Mage::getModel('catalog/layer_filter_item');
echo get_class($item);
Вывод должен быть "ootd_navigation_model_layer_filter_item". Если это так, то ваша перепись работает, и у вас другая проблема. Если это "gomage_navigation_model_layer_filter_item", мы должны дополнительно проверить ваш код перезаписи.