Переписывание модели, которая уже была переписана


Я прочитал около десяти разных мест (в основном ответы на 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 {
  // ...
}

Я перепробовал так много вещей, что больше не знаю, что делать. Если вам нужна дополнительная информация, просто спросите. Заранее спасибо.

Author: Davis Sorenson, 2014-11-06

2 answers

codepool чувствителен к регистру и должен быть codePool

 6
Author: Kristof at Fooman, 2014-11-06 11:06:09

Это должно работать так, как вы это делаете, это выглядит абсолютно правильно. Не могли бы вы добавить файл"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", мы должны дополнительно проверить ваш код перезаписи.

 3
Author: Andreas von Studnitz, 2014-11-06 10:34:23