我试图禁用一些Magento核心模块用于精简商店。我收到一条错误消息,说XmlConnect依赖于我禁用的其中一个模块。我为XmlConnect提取了模块XML文件,并看到了令人恐惧的依赖列表:
<depends>
<Mage_Checkout />
<Mage_Paypal />
<Mage_Usa />
<Mage_Tax />
<Mage_Weee />
<Mage_Catalog />
<Mage_CatalogSearch />
<Mage_CatalogInventory />
<Mage_Bundle />
<Mage_Wishlist />
<Mage_Rating />
<Mage_Review />
</depends>
鉴于XmlConnect依赖于Catalog和Checkout等关键模块,实际上无法禁用,因此无法禁用Wishlist and Review等非常常必需的模块。
为什么XmlConnect依赖于这么多附带模块?这些依赖关系是否可能倒退?删除它们是否安全?
答案 0 :(得分:4)
假设您正在谈论位于
的Mage_XmlConnect
模块
app/code/core/Mage/XmlConnect
然后它有一个“可怕的”依赖列表,因为该模块具有“可怕”的功能。
Mage_XmlConnect
模块实现了Magento Mobile基于手机的商店应用程序的后端。 (如果你很聪明,可以将它用于your own mobile application)。它取决于所有这些模块,因为它使用来自这些模块的对象来实现此功能。
虽然我不是构建Magento Mobile应用程序的团队的一员,但我认为它要求包含wishlist项目和评论,因此Mage_XmlConnect
模块依赖于审核和心愿单模块。从理论上讲,Magento Mobile应用程序本身可以分为多个模块,但添加到Magento的每个模块都具有性能影响以及复杂性含义。考虑到Magento团队当时需要工作的速度,很容易理解为什么他们选择在单个模块中实现所有内容。
同样重要的是要记住,虽然可以禁用模块,但Magento从未设计过这个目标。实际上,模块系统的存在更多是为了防止模块之间的代码污染,并允许多个团队(或单个开发人员)在不影响其他开发人员的情况下处理其功能。隔离每个模块的功能以使系统可以独立于任何特定模块运行将是整洁的 - 但是Varien / Magento Inc.在这方面的投资回报率很低。因此没有完成。您可能不喜欢它,但这就是大多数具有商业/商业意义的软件的开发方式。
如果要使用Mage_XmlConnect
,则需要启用其他模块。但是,运行商店并不严格需要Mage_XmlConnect
,并且(可能)可以安全地禁用。