为什么Magento有3个代码池?
-
16-10-2019 - |
题
Magento有三个代码池:
- 社区
- 核
- 当地的
核: 它包含所有Magento默认模块
社区和本地: 我们将这些代码池用于我们的自定义模块开发。
现在我对此有所怀疑:
- 为什么Magento使用两个代码池进行我们的自定义?
- 为什么Magento不使用一个单个代码池进行自定义?
有人可以解释一下吗?
解决方案
应用/代码/核心- 保存使用基本洋红色分布并构成核心功能的模块。
应用程序/代码/社区- 持有第三方开发的模块
应用/代码/本地- 保留您开发的自定义模块,包括法师代码覆盖。
为什么Magento使用两个代码池进行我们的自定义?
Magento实际上使用了三个代码池。它将加载 当地的 第一的, 社区 第二,然后 核 第三。当两个+第三方扩展程序试图重写同一件事时,它将三个用于组织目的并帮助解决问题。在一个示例中,您在应用程序/代码/社区中有两个扩展程序试图重写相同的模型,您可以简单地将App/Code/local进行扩展名,然后将两个扩展名逻辑合并在一起。
为什么Magento不使用单个代码池进行自定义?
这样做的方法是尝试拥有一些代码组织。另外,当您遇到第三方冲突时,当地人非常有助于解决这些问题。当地人也很高兴拥有只有该站点才有的扩展。
其他提示
core :
该代码池属于Magento Core开发团队。因此,您不应在此代码池中进行任何修改。
community :
这属于Magento社区开发人员(包括任何开发第三方扩展的开发人员)。如果要创建任何第三方扩展,因此可以使用此代码池。
local :
如果您想对Magento商店进行任何修改(添加新功能 /扩展层 /核心功能修改等),则可以使用此方法,并且不想与社区共享。同时,您可以覆盖核心和社区代码池中的功能
描述Magento Codepools
核心池
首先,该文件夹存储所有使Magento如此强大,灵活和可爱的代码。 Magento开发的主要规则是,您绝对不应进行任何更改。换句话说,此文件夹仅属于Magento Core Developers,如果您要在此池中编辑任何内容,他们的邪恶精神也可以通过展示来惩罚您。
社区池
该文件夹完全属于社区开发人员。这是可以在Magentoconnect或Extensions Development Store上找到的数百个第三方扩展名的正确位置。因此,基本上,如果您已经安装了任何扩展名,则必须仅在应用程序/代码/社区/中。
当地游泳池
如果您拥有自己的基于Magento的商店,并且想自己制作所有东西,或者您是Magento开发人员,并且有目的以某种方式更改逻辑,那么本地游泳池是应该完成所有工作的地方。如果要覆盖Magento扩展,块或方法,请从Core Pool中复制必要的文件夹,然后做任何您愿意做的事情。将相同的规则应用于专门为网站创建的自定义扩展名 - 所有代码都应在本地池中。
简单地添加上述所有内容,以使优先级和模块化。您可以在mage.php中检查相同的内容。
加载代码池
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'local';
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'community';
$paths[] = BP . DS . 'app' . DS . 'code' . DS . 'core';
$paths[] = BP . DS . 'lib';
因此,首先是本地调用,然后community然后Core和Magento将找不到任何核心文件,然后它将在包含Zend-Framework Core Files的LIB文件夹上搜索
我最好的解释是,如果您的目标是通过Magento Connect向更广泛的受众分发扩展,则可以将其放入社区中。
这将使另一个开发人员通过将类放入本地文件夹来覆盖行为。