`
hudeyong926
  • 浏览: 2032830 次
  • 来自: 武汉
社区版块
存档分类
最新评论

Magento 覆写

 
阅读更多

magento的覆写很重要,在项目开发过程中经常需要修改核心的东西,但为了不影响magento系统升级,我们不能直接对magento的核心代码修改,我们只能覆写。下面介绍各个部件的覆写方法

如要覆写magento核心模块里面的php文件即app/code/core目录下的php文件,可以把core目录下的文件直接复制到 local目录 下,比如覆写/core/Mage/Catalog/Model/Product.php文件,那么把product复制放到local保持路径一至 /local/Mage/Catalog/Model/Product.php,然后Magento就会用local中这个文件而不是core里面的。顺 序是local→community→core→lib,意思是用这种方法连lib里面的文件都可以覆写。但 controller是不能用这种方法覆写的。这个覆写之所以起作用是因为Magento set_include_path的时候先加的是local,然后是community,然后是core,再然后才是lib。(见 app/Mage.php文件)但这种覆写方式不好,尽量不用

 

接下来说的覆写方法才是比较合理的。

etc的覆写

etc其实不需要覆写,如你要改其它模块的配置信息,直接在自己的模块配置文件里面改就行了,一样可以改过来。

来个例子吧,比如你要修改config/global/customer/address/formats/html的值,你不需要非得在customer模块中改。在任意的etc/config.xml文件都可以改 如下代码就OK。

<global>
    <customer>
        <address>
            <formats>
                <html>
                    <defaultFormat><![CDATA[
<strong>Character Name:</strong> {{var character_name}}<br />
<strong>Name:</strong> {{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}<br />
<strong>Country:</strong> {{var country}}<br />
{{depend telephone}}<strong>Tel: </strong> {{var telephone}}{{/depend}}
            ]]></defaultFormat>
                </html>
            </formats>
        </address>
    </customer>
</global>

Block, Model, Helper的覆写

Block, Model, Helper的覆写比较简单,而且方式一样,这里面只示例block的覆写 比如就在Helloworld模块的上,覆写page/html block。 在etc/config.xml的config/global/blocks里面添加以下代码

<helloworld>          
    <rewrite>
        <page_html>Namespace_Helloworld_Block_Page_Html</page_html>
	<adminhtml_import_edit>test_Sales_Block_Adminhtml_Import_Edit</adminhtml_import_edit>
    </rewrite>
</helloworld>

 然后在此模块目录下的Block目录下新建Page目录,然后新建Html.php文件,文件内容为

<?php   
class Namespace_Helloworld_Block_Page_Html extends Mage_Page_Block_Html
{
    //override goes here.
    //在这里面可以尽情重写,
}

Model的覆写修改自己的模块配置文件app/code/local/App/Customer/etc/config.xml

     <global>
         <models>
             <customer>
                 <rewrite>
                     <customer>App_Customer_Model_Customer</customer>
                 </rewrite>
             </customer>
         </models>
     </global>

现在写你新的Model,在文件app/code/local/App/Customer/Model/Customer.php中新建类App_Customer_Model_Cutomer

class App_Customer_Model_Customer extends Mage_Customer_Model_Customer {
     // 重写已存在的方法
     public function validate() {
         // Define new validate rules. From now magento call this validate method instead of existing method
         //return $errors;
         return true;
     }
  
     // 你还可以创建新的方法
     public function newMethod() {
         // function logic
     }
 }

用这种覆写方式的好处是,这里用到了继承,也就是没必要重写的可以不写出来,直接继承父类就行了。

controller的覆写

controller有两种覆写方法,假如我们想在浏览产品分类的时候用到的不是Mage_Catalog模块下的category控制器,而是Namespace_Helloworld模块下的catalog_category控制器。

Action覆写

<global>
    <rewrite>
           <App_Test_blog>
               <from><![CDATA[#^/test/index/index222/#]]></from>
               <to>/test/index/hello/</to>
           </App_Test_blog>
    </rewrite>   

方法一 修改etc/config文件,在config/global里面加上改下代码

<rewrite>
    <helloworld_catalog_category>
        <from><![CDATA[#^(/)?catalog/category/#]]></from>
        <to><![CDATA[helloworld/catalog_category/]]></to>
    </helloworld_catalog_category>
</rewrite>

这种方法实际上是正则替换把catalog/category/*替换成了helloworld/catalog_category/* 然后在Helloworld模块目录下的controllers目录下,新建Catalog目录,然后新建CategoryController.php 文件,内容为

<?php
require_once 'Mage/Catalog/controllers/CategoryController.php';

class Namespace_Helloworld_Catalog_CategoryController extends Mage_Catalog_CategoryController {
	/**
     * Category view action
     */
	public function viewAction()
	{
		echo 'controller override success';
		parent::viewAction();
	}

}
?>

方法二 方法二与方法一的唯一不同是etc/config.xml的写法不一样,方法二的写法如下 在config下加下面的代码。

</global>
<admin>
	 <routers>
		<adminhtml>
			<args>
				<modules>
					<Namespace_Helloworld before="Mage_Adminhtml">Namespace_Helloworld</Namespace_Helloworld>
				</modules>
			</args>
		</adminhtml>
	</routers>
</admin>	
<frontend>

 

 

 

分享到:
评论

相关推荐

    magento快速复制网站_magento_magento快速复制站_

    在电商领域,经常会有需求将一个已经建立并运行良好的Magento站点快速复制到另一个服务器,用于测试、备份或者创建一个新的独立站点。这个过程涉及到数据库的备份与还原、文件系统的复制以及配置的调整等多个步骤。 ...

    magento二次开发大全

    Magento是一款强大的开源电子商务平台,以其高度可定制性和灵活性著称。在进行Magento的二次开发时,你需要理解并掌握以下几个核心概念和技术: 1. **MVC架构**:Magento基于Model-View-Controller(MVC)设计模式...

    magento数据结构分析

    标题:“Magento数据结构分析” 描述:“Magento数据字典”提供了对Magento系统中各种数据库表的深入理解,这对于理解和优化Magento的性能至关重要。 一、Magento数据结构解析 Magento是一款功能强大的电子商务...

    Magento-SMTP-Email

    Magento是开源的电子商务平台,广泛用于在线商店的建设。SMTP(Simple Mail Transfer Protocol)是用于发送电子邮件的标准协议。在Magento中,SMTP插件扮演着关键角色,它允许商家通过更安全、可靠的SMTP服务器发送...

    magento入门学习资料

    Magento是一款强大的开源电子商务平台,以其高度可定制性和灵活性著称。作为一款基于PHP开发的系统,它为商家提供了丰富的功能,包括商品管理、订单处理、客户管理、营销工具等。以下将详细介绍`magento入门学习资料...

    magento图片延时加载插件

    Magento是一款强大的开源电子商务平台,它的灵活性和可扩展性使得开发者能够根据需求定制各种功能。在电商网站中,图片是至关重要的元素,它们可以展示产品细节,吸引顾客注意力。然而,大量的图片也会对网站性能...

    Magento插件开发手册 Magento Extension Developers Guide

    Magento是一款强大的开源电子商务平台,为开发者提供了广泛的定制和扩展能力。《Magento插件开发手册》是一份详尽的指南,旨在帮助开发者理解Magento的核心架构、编码标准以及如何创建和部署自定义插件。 ### ...

    magento商城数据库

    Magento 商城数据库是一个关键组成部分,它是 Magento 电子商务平台的核心,负责存储所有商品信息、客户数据、订单记录以及网站配置等重要信息。Magento 是一个开源的电子商务解决方案,以其强大的功能和高度可定制...

    magento2 developers cookbook

    根据给定文件信息,以下为《Magento 2 Developer's Cookbook》一书中的知识点介绍。 首先,《Magento 2 Developer's Cookbook》是一本针对Magento 2开发的指导手册,它向开发者提供了实用的食谱来解决在Magento 2...

    magento-java-master.zip_magento

    这个“magento-java-master.zip_magento”压缩包可能是为了提供一个Java连接Magento源码的示例或者库,帮助开发者实现Java与Magento系统的交互。 在Java中与Magento进行交互通常涉及到以下几个关键知识点: 1. **...

    Magento 常用方法和插件

    Magento是一款强大的开源电子商务平台,以其高度可定制性和灵活性著称。在Magento的开发过程中,掌握常用的方法和插件是提高工作效率的关键。这篇博客"Magento 常用方法和插件"可能涵盖了以下方面: 首先,关于...

    Magento se105 精美兰亭更新模板 9种颜色

    Magento是一款强大的开源电子商务平台,专为在线商家设计,提供丰富的功能和高度的可定制性。在本资源中,我们关注的是“Magento se105 精美兰亭更新模板”,这是一款专为Magento设计的视觉效果优秀的主题模板,特别...

    The Definitive Guide to Magento (Apress出品 Magento权威指南)

    ### Magento权威指南 #### 书籍概述 《Magento权威指南》是由Adam McCombs与Robert Banh共同编著的一本深入探讨Magento电商平台的技术手册。该书由Apress出版社于2009年出版发行,旨在为读者提供一个全面、系统的...

    magik shoes magento 模板, magento 1.7 模板

    Magento是一款开源的电子商务平台,专为在线商家设计,提供强大的购物车系统和丰富的功能。"Magik Shoes Magento 模板"是专为Magento 1.7版本设计的商店主题,旨在提升在线鞋类销售商店的用户体验和视觉吸引力。在这...

    magento官方文档翻译超好

    ### Magento官方文档翻译超好——深入理解Magento数据层操作与数据封装 #### 一、引言 Magento是一款基于PHP的企业级电子商务平台,以其强大的功能、灵活性以及可扩展性著称。在Magento中,数据处理是一个核心组成...

    开源网店系统 Magento

    Magento是一款强大的开源电子商务平台,由Varien公司开发,并在2008年首次发布。它以其高度可定制性、丰富的功能集以及灵活的架构而受到全球电商从业者的广泛青睐。这款网店系统的出现,为中小型企业提供了与大型...

    Magento php开发指南

    Magento是一款流行的开源电子商务平台,其功能强大且模块化,它支持在线零售业务的创建和管理。Magento使用PHP语言编写,它为开发者提供了丰富的扩展性和灵活性,使得定制网站功能和外观成为可能。本指南是为后台...

    Magento: Beginner's Guide ([Packt]出品 Magento新手指南)

    ### Magento新手指南知识点详解 #### 一、Magento简介与特性 **Magento**是一款功能强大的开源电子商务平台,由Varien公司(后被Adobe收购)于2008年首次发布。它以其灵活性、可扩展性和丰富的功能集而闻名,是...

    最漂亮的magento模板1

    Magento是一款开源的电子商务平台,以其强大的功能和高度的可定制性而受到许多在线商家的青睐。标题中的"最漂亮的magento模板1"指的是一个专为Magento设计的视觉效果出众的前端主题,它能够极大地提升网站的用户体验...

Global site tag (gtag.js) - Google Analytics