Có một phần mở rộng của bên thứ ba viết lại một lớp lõi Magento cụ thể. Nó không phải là vấn đề nếu nó là một khối, người trợ giúp hoặc mô hình, nhưng trong trường hợp này nó là một mô hình. Bây giờ tôi gặp phải việc viết lại này là xấu và tôi muốn vô hiệu hóa nó mà không thay đổi phần mở rộng của bên thứ ba. Do đó, tôi viết một tiện ích mở rộng tùy chỉnh phụ thuộc vào tiện ích mở rộng của bên thứ ba. Cách tốt nhất để vô hiệu hóa viết lại bên thứ ba là gì? Cách an toàn tôi có thể nghĩ đến là xác định viết lại tùy chỉnh, được sử dụng thay vì viết lại bên thứ ba:
<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
, lớp trực tiếp kéo dài từ lớp Mage và do đó vô hiệu hóa việc viết lại của bên thứ ba:
class Custom_Extension_Model_Sth extends Mage_Core_Model_Sth
{
}
Điều này hoạt động, nhưng không cảm thấy quá tốt. Suy nghĩ về các nhà quan sát, có thể vô hiệu hóa chúng chỉ thông qua config.xml bằng cách đặt chúng thành disabled
. Là một cái gì đó như thế này có thể với viết lại? Tôi đã thử sử dụng như sau và nó hoạt động:
<global>
<models>
<mage_core>
<rewrite>
<sth></sth>
</rewrite>
</mage_core>
</models>
</global>
Nhưng nó có an toàn để làm điều đó? Nó hoạt động trong tất cả các phiên bản? Tôi chưa bao giờ thấy điều đó trong tự nhiên, đó là lý do tại sao tôi hỏi.