Существует стороннее расширение, которое переписывает определенный базовый класс Magento. Не должно иметь значения, является ли это блоком, помощником или моделью, но в данном случае это модель. Теперь я сталкиваюсь с тем, что это переписывание плохое, и я хотел бы отключить его без изменения стороннего расширения. Следовательно, я пишу собственное расширение, которое зависит от стороннего расширения. Каков наилучший способ отключить стороннее переписывание? Безопасный вопрос, который я могу придумать, - это определить пользовательское переписывание, которое используется вместо стороннего переписывания:
<global>
<models>
<custom_extension>
<class>Custom_Extension_Model</class>
</custom_extension>
<mage_core>
<rewrite>
<sth>Custom_Extension_Model_Sth</sth>
</rewrite>
</mage_core>
</models>
</global>
Sth.php
, класс напрямую выходит из класса Mage и поэтому отключает стороннее переписывание:
class Custom_Extension_Model_Sth extends Mage_Core_Model_Sth
{
}
Это работает, но не слишком хорошо. Думая о наблюдателях, их можно отключить только через config.xml, установив их в disabled
. Возможно ли что-то подобное с переписыванием? Я попытался использовать следующее, и это работает:
<global>
<models>
<mage_core>
<rewrite>
<sth></sth>
</rewrite>
</mage_core>
</models>
</global>
Но безопасно ли это делать? Это работает во всех версиях? Я никогда не видел этого в дикой природе, поэтому я спрашиваю.