Mục tiêu của tôi là tắt mô-đun theo chương trình (ví dụ trong một số sự kiện quan sát). Người quan sát sớm nhất tôi tìm thấy là controller_front_init_before.Magento, làm thế nào để vô hiệu hóa mô-đun lập trình?
Vì vậy, mô-đun của tôi là nghe nó, và sau đó làm tiếp theo:
Mage::getConfig()->getModuleConfig('IG_LightBox')->active=(string)'false';
Nhưng module chọn vẫn còn hoạt động trên mỗi trang.
Ngoài ra tôi đã cố gắng tiếp cận này (giống nhau nhưng theo cách khác nhau):
Mage::getConfig()->getNode('modules/IG_LightBox')->active=(string)'false';
Ngoài ra tôi đã cố gắng để reinit cấu hình sau khi tất cả và để loadModules thêm một lần nữa, nhưng cả hai sẽ không giúp đỡ.
Mage::getConfig()->loadModules(); // won't help
Mage::getConfig()->reinit(); // won't help
Có thể tắt mô-đun theo chương trình không?
Cập nhật 1. Giải pháp này hoạt động hoàn hảo cho back-end. active = false thực sự vô hiệu hóa các mô-đun, nhưng tôi cần nó cho front-end quá. Vì vậy, tôi giữ cho tìm kiếm của tôi.
Cập nhật 2 Có 2 phương pháp trong ứng dụng/Mage.php, được gọi là init và initSpecified, cho phép chạy các Magento với số chọn chỉ mô-đun. Nhưng những phương thức này không được gọi trong luồng mặc định.
Cập nhật 3 Có sự kiện quan sát mà chúng tôi có thể sử dụng để kích hoạt hoặc hủy kích hoạt mô-đun thanh toán khi đang di chuyển. Nó được gọi là payment_method_is_active. Ví dụ về mã này làm cho phương thức thanh toán bằng séc chi phiếu không hoạt động:
public function payment_method_is_active(Varien_Event_Observer $observer)
{
if($observer->getMethodInstance()->getCode()=='checkmo')
{
$observer->getResult()->isAvailable=false;
}
}
Tôi không thấy nơi bạn thực hiện "lưu" trên giá trị này vì tệp này được lưu trữ trong tệp mô-đun không có trong cơ sở dữ liệu, bạn phải thay đổi giá trị trong tệp cấu hình và sau đó lưu thời gian –