Переопределение блока Magento из двух разных модулей - PullRequest
4 голосов
/ 16 февраля 2012

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

<blocks>
  <catalog>
    <rewrite>
            <navigation>Mycompany_Mymodule_Catalog_Block_Navigation</navigation>
        </rewrite>
  </catalog>
</blocks>

но это уже переопределено другим расширением magento из другой компании:

<blocks>
  <catalog>
    <rewrite>
        <navigation>Othercompany_Othermodule_Block_Navigation</navigation>
    </rewrite>
  </catalog>
</blocks>

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

Ответы [ 2 ]

7 голосов
/ 16 февраля 2012

Да, вы должны решить, какой из них официально перезаписывает основной блок. Имейте этот один наследующий тот, который не делает переопределение, и имейте тот, который наследует основной.

My_Custom_Block extends Other_Custom_Block
Other_Custom_Block extends Mage_Core_Block
Mage_Core_Block extends Whatever_Magento_Wants

Отредактируйте файлы config.xml так, чтобы только My_Custom_Block переопределял основной блок.

EDIT Вот нужный вам XML:

<blocks>
  <catalog>
    <rewrite>
            <navigation>Mycompany_Mymodule_Catalog_Block_Navigation</navigation>
        </rewrite>
  </catalog>
</blocks>
0 голосов
/ 07 марта 2012

Thx Макс. Я думаю, как и ваш пример, что «My_Custom_Block» должен быть последним иерархическим классом, так что вы ничего не трогаете в классе «Other_Custom_Block».

Тогда вам нужно только прокомментировать правило перезаписи в config.xml «Другой компании».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...