Istnieje rozszerzenie innej firmy, które przepisuje określoną klasę podstawową Magento. Nie powinno mieć znaczenia, czy jest to blok, pomocnik czy model, ale w tym przypadku jest to model. Teraz napotykam, że to przepisywanie jest złe i chciałbym je wyłączyć bez zmiany rozszerzenia strony trzeciej. Dlatego piszę niestandardowe rozszerzenie, które zależy od rozszerzenia strony trzeciej. Jaki jest najlepszy sposób na wyłączenie przepisywania strony trzeciej? Bezpiecznym, o którym mogę myśleć, jest zdefiniowanie niestandardowego przepisywania, które jest używane zamiast przepisywania przez inną firmę:
<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
, klasa bezpośrednio wywodzi się z klasy Mag i dlatego wyłącza przepisywanie przez inne firmy:
class Custom_Extension_Model_Sth extends Mage_Core_Model_Sth
{
}
To działa, ale nie wydaje się zbyt dobre. Myśląc o obserwatorach, można je wyłączyć tylko poprzez config.xml poprzez ustawienie ich na disabled
. Czy coś takiego jest możliwe przy przepisywaniu? Próbowałem użyć następujących i działa:
<global>
<models>
<mage_core>
<rewrite>
<sth></sth>
</rewrite>
</mage_core>
</models>
</global>
Ale czy to bezpieczne? Czy to działa we wszystkich wersjach? Nigdy nie widziałem tego na wolności, dlatego pytam.
źródło