如何覆盖Magento中的本地模块?

如何覆盖Magento中的本地模块?,magento,Magento,在Magento中,有许多关于如何覆盖核心模块的示例,但是如何覆盖本地模块呢?如果不覆盖模块,则覆盖(或者更恰当地说,重写,请参见下文)属于模块的类,或者属于generallib文件夹的类 根据您的措辞,我假设override的意思是“从app/code/core/”获取一个类并将其放置在“app/code/local/”中?如果是这样的话,你基本上不能。代码池可以工作,因为magento向PHP包含路径添加了四个路径 app/code/local app/code/community app/

在Magento中,有许多关于如何覆盖核心模块的示例,但是如何覆盖本地模块呢?

如果不覆盖模块,则覆盖(或者更恰当地说,
重写
,请参见下文)属于模块的类,或者属于general
lib
文件夹的类

根据您的措辞,我假设override的意思是“从
app/code/core/
”获取一个类并将其放置在“
app/code/local/
”中?如果是这样的话,你基本上不能。代码池可以工作,因为magento向PHP包含路径添加了四个路径

app/code/local
app/code/community
app/code/core
lib
然后,当自动装弹机说

include('Mage/Module/Path/To/File.php');
if将首先检查
local
文件夹,然后是
community
文件夹,然后是核心文件夹,最后是
lib
文件夹。
local
文件夹始终获胜


如果您的类是模型、助手或块,我建议使用基于模块的重写系统。重写核心模块中的类所使用的相同技术也可用于重写本地或社区模块中的类。基于模块的系统的要点是,运行核心系统的代码与其他人可能添加到系统中的代码插入/行为相同。

只需编辑代码,实际上不需要覆盖本地模块,但该模块仅在某些情况下被覆盖,并且想知道是否可以覆盖本地代码池中的一个模块。谢谢Alan,在阅读并使用layoutViewer模块后,我感到有点荣幸从您那里得到答案。这会把事情弄清楚的。一如既往的好解释!我计划做的是使用commuinity模块,但替换它使用的其中一种型号。确保您阅读并使用Alan答案的最后一段。Codepool hackery不如通过配置简单地替换模型那么干净,因此该解决方案更受欢迎。“您用来重写核心模块中的类的相同技术可以用于重写本地或社区模块中的类。”---但是如何在本地代码池中重写本地模块呢?@TommyCoxGreen正是这个问题让我来到了这篇文章。这就是我需要知道的全部。是否可以覆盖本地模块。在我至少尝试尝试之前。