当我在“本地”结构中创建文件时,就像“核心”中的文件结构一样,Magento看不到这些更改。 为什么?可能是我需要更改一些其他文件? 我改变core/Mage/Cutomer/controllers/AcountController.php
, 把改变后的文件放在local/Mage/Cutomer/controllers/AcountController.php
, 但是没有效果。文件“本地”中的更改不起作用
Magento与“核心”文件一起工作。
当我在“本地”结构中创建文件时,就像“核心”中的文件结构一样,Magento看不到这些更改。 为什么?可能是我需要更改一些其他文件? 我改变core/Mage/Cutomer/controllers/AcountController.php
, 把改变后的文件放在local/Mage/Cutomer/controllers/AcountController.php
, 但是没有效果。文件“本地”中的更改不起作用
Magento与“核心”文件一起工作。
创建您自己的模块并编写一个挂钩到magento逻辑的观察器。
我认为magento是以代码池为核心。 所以它开始在核心直接找到这个类。
所以你可以改变文件 应用程序 - >等 - >模块 - > Mage_All.xml 发现以下并更改codepool一样,改变
<Mage_Customer>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Eav/>
<Mage_Dataflow/>
<Mage_Directory/>
</depends>
</Mage_Customer>
不要以为这是正确的方式,改变核心功能。 –
我发现这个问题相同:http://stackoverflow.com/questions/2916609/local-vs-core-contoller – Dolly
我个人认为,创建一个自定义模块是更好方式来做到这一点,因为你可以使用'ModuleName'作为描述来指示这个模块将对核心做些什么改变,并使其他开发者更容易修改你的代码。
app/code/local /MageIgniter/ModuleName/controllers/AcountController.php
<?php
require_once Mage::getModuleDir('controllers', 'Mage_Customer').DS.'AccountController.php';
class MageIgniter_ModuleName_AccountController extends Mage_Customer_AccountController{
}
应用程序/代码/本地/ MageIgniter /模块名在/ etc/config.xml中
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<MageIgniter_ModuleName>
<version>0.0.1</version>
</MageIgniter_ModuleName>
</modules>
<frontend>
<routers>
<customer>
<args>
<modules>
<MageIgniter_ModuleName before="Mage_Customer">MageIgniter_ModuleName</MageIgniter_ModuleName>
</modules>
</args>
</customer>
</routers>
</frontend>
</config>
/app/etc/modules/MageIgniter_ModuleName.xml
<config>
<modules>
<MageIgniter_ModuleName>
<active>true</active>
<codePool>local</codePool>
</MageIgniter_ModuleName>
</modules>
</config>
更多@
How to extend Magento core controller?
Magento: Overriding Core Files (Blocks, Models, Resources, Controllers)
块,助手,模型一切都会在本地工作,但控制器不会,你必须在新模块中重写控制器并更新所需的功能。 – MTM