Існує стороннє розширення, яке переписує певний базовий клас 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>
Але чи безпечно це робити? Чи працює він у всіх версіях? Я ніколи не бачив цього в дикій природі, тому прошу.