禁用模块后出现错误
我按照这篇文章的说明禁用了我的Magento 1.7实例的Rss和时事通讯模块:
http://inchoo.net/ecommerce/magento/how-to-fully-disable-turn-off-magento-module/comment-page-1/#comment-65853
我通过在Mage_Rss
和Mage_Newsletter
模块中更改为<active>false</active>
来编辑appetcmodulesMage_All.xml
文件。
问题是,当我尝试通过管理面板加载客户页面时,出现以下错误:
致命错误:在267行的app code core Mage Newsletter Model Subscriber.php中的非对象上调用成员函数loadByCustomer()
为什么会发生? 为什么这个代码正在执行,即使我禁用了这样的模块?
谢谢!
通过其<active>
条目禁用模块后的第一步。 始终清除缓存,如果使用编译器,请重新编译, 以便在禁用的模块中没有代码引用类。
通过将<active>
设置为false,但通过其他模块,模板或布局试图调用禁用模块中的代码,通过app / etc / modules / mod_name.xml关闭模块后,通常不会执行代码。
出现问题的地方是另一个模块列出刚在其依赖项列表中关闭的模块 。 总是检查所有其他模块xml文件依赖关系列表,以提及您要关闭的模块。
此外,您必须检查引用禁用模块中的类的模板.phtml
文件。 这可以将可怕的call to a non-object
引发call to a non-object
类型的异常错误。 例如,一个提供自定义购物车属性的模块会要求您将条目添加到购物车模板中。 关闭模块不会摆脱引用。
确保没有布局尝试加载引用此模块的任何东西(自定义布局local.xml)。
如果Magento客户帐户依赖于通过调用该条目来禁用对该模块的测试,而不是实际检查该模块是否已加载,那么您也可能想要进入System Config,Advanced并关闭新闻快递模块输出。 有时候,Magento程序员会忘记做适当的错误陷阱,这让我在之前的循环中陷入困境。
我相信我可以解决问题(不确定是否会产生任何副作用):
刚刚通过添加外部if子句appcodecoreMageAdminhtmlBlockCustomerEditTabs.php
围绕第90行的文件appcodecoreMageAdminhtmlBlockCustomerEditTabs.php
:
if (Mage::helper('core')->isModuleEnabled('Mage_Newsletter')) {
if (Mage::getSingleton('admin/session')->isAllowed('newsletter/subscriber')) {
$this->addTab('newsletter', array(
'label' => Mage::helper('customer')->__('Newsletter'),
'content' => $this->getLayout()->createBlock('adminhtml/customer_edit_tab_newsletter')->initForm()->toHtml()
));
}
}
+1如果我保存了你的一天,请告诉我,如果你注意到了可能的影响:D
链接地址: http://www.djcxy.com/p/65183.html