Magento为什么有3个代码池?


26

Magento具有三个代码池:

  1. 社区
  2. 核心
  3. 本地

核心:它包含所有Magento默认模块

社区和本地:我们将这些代码池用于我们的自定义模块开发。

现在我对此表示怀疑:

  • Magento为什么使用两个代码池进行定制?
  • Magento为什么不使用单个代码池进行自定义?

有人可以解释一下吗?

Answers:


34

应用程序/代码/核心 -存放与基本Magento一起分发并组成核心功能的模块。

应用程序/代码/社区 -包含由第三方开发的模块

应用程序/代码/本地 -包含您开发的自定义模块,包括Mage代码覆盖。

Magento为什么要使用两个代码池进行定制?

Magento实际上使用了三个代码池。它将加载本地第一,社区第二和核心第三。当组织两个以上的第三方扩展试图重写同一件事时,它使用三个来组织目的并帮助解决问题。在一个示例中,您在app / code / community中有两个扩展试图重写相同的模型,您可以简单地在app / code / local中进行扩展,然后将两个扩展逻辑合并在一起。

Magento为什么不使用单个代码池进行自定义?

这样做是为了尝试进行一些代码组织。另外,当您遇到第三者冲突时,当地人会很好地帮助解决这些问题。当地人也很高兴拥有只有该站点才能拥有的扩展。


1
单个代码池问题的不错答案。考虑到所有冲突,您将在安装多个第三方模块后遇到所有冲突,因此非常有必要使用该第三local代码池来处理所有挂断。
Fiasco Labs

11

在此处输入图片说明

core :该代码池属于Magento核心开发团队。因此,您不应在此代码池中进行任何修改。

community :这属于Magento社区开发人员(包括开发第三方扩展的所有开发人员)。如果要创建任何第三方扩展,则可以为此使用该代码池。

local :如果您想专门为您的Magento商店进行任何修改(添加新功能/扩展扩展/核心功能修改等),并且不想与社区共享,则可以使用此方法。同时,您可以覆盖核心和社区代码池中的功能


5

描述Magento代码池

核心池

首先,此文件夹存储使Magento如此强大,灵活和可爱的所有代码。Magento开发的主要原则是,您永远不应对其进行任何更改。换句话说,此文件夹仅属于Magento核心开发人员,如果您要在该池中进行任何编辑,则即使通过显示,他们的邪恶行为也可能会惩罚您。

社区泳池

该文件夹完全属于社区开发人员。在MagentoConnect上或扩展开发商店中可以找到数百个免费和付费的第三方扩展的正确位置。因此,基本上,如果您已安装任何扩展程序,则该扩展程序只能位于app / code / community /中。

当地游泳池

如果您有自己的基于Magento的商店,并且想自己制作所有东西,或者您是Magento开发人员,并且打算以某种方式更改逻辑,则应该在本地池中进行所有操作。如果要覆盖Magento扩展,块或方法,请从Core池中复制必要的文件夹,然后执行您想做的任何事情。对专门为网站创建的自定义扩展应用相同的规则-所有代码应位于本地池中。


4

简单地添加以上所有内容即可确定优先级并具有模块化。您可以在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';

因此,首先本地调用,然后社区调用,然后core和magento将找不到任何核心文件,然后它将在包含Zend-Framework Core文件的lib文件夹中搜索


1

我最好的解释是,如果您打算通过Magento Connect将扩展扩展到更广泛的受众,则可以将其放入社区。

这将允许另一个开发人员通过将一个类放入本地文件夹来覆盖该行为。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.