- 浏览: 2016399 次
- 来自: 武汉
文章分类
- 全部博客 (415)
- UI设计 (19)
- PHP (26)
- PHP工具类 (23)
- 二次开发 (53)
- phpMVC (28)
- javascript (50)
- JS 组件 (20)
- MYSQL (37)
- 其他 (16)
- xml/flash/flex (6)
- 版本控制 (7)
- 开源 (4)
- bug解决 (5)
- Linux (15)
- NoSQL (14)
- 软件设计 (21)
- C/PHP内核 (5)
- 安全性 (8)
- 面试 (18)
- 设计模式 (4)
- 重构 (6)
- 开发配置 (11)
- SQL SERVER (12)
- 采集 (3)
- SEO (2)
- 维护 (15)
- UML (5)
- 硬件标准 (1)
- 架构 (8)
- JAVA (1)
最新评论
-
carry0987:
求大神分離下X3的模板...不然對於PHP7不友好啊...
分离自Discuz模板类和语法 -
青木得海角:
你好,里面的 Crypt/TripleDES.php 和 Cr ...
POS机算法 -
zohog:
楼主,Mac.php中里面的 Crypt/TripleDES. ...
POS机算法 -
zohog:
楼主,Mac.php中里面的 Crypt/TripleDES. ...
POS机算法 -
q59200182:
能不能给个完整的demo 新手上路不会 求带
AngularJs 指令directive之controller,link,compile
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>
发表评论
-
phpcms v9网站搬家更换域名的方法
2016-06-17 09:39 1471网站在发展的过程中,很可能多次的修改域名。那么在PHPCM ... -
phpcms SEO
2016-06-15 16:33 1303大家应该都是在header头文件里写上{if isset( ... -
Magento 自定义Url
2013-12-12 22:21 1290查看Url重写列表,在后台的Catalog > URL ... -
magento 如何安装模板主题
2013-11-07 23:26 2047注意区分“主题包”和“主题文件”这两个概念。我们所使用的主 ... -
MAGENTO调试时候,关闭缓存
2013-11-07 22:43 3616在调试MAGENTO的时候,我们其实不需要为了每一个小的的 ... -
Magento 返回不带Layout的页面输出
2013-08-06 13:58 8212. 在controller的代码方式创建并输出block ... -
magento 添加 删除css js
2013-06-03 20:41 2517在addJs、addCss的代码一般在page/html_ ... -
Magento Shell
2013-04-16 15:32 1453在magento/shell/下Virtualcard.p ... -
Magento 开启模板路径提示
2013-01-30 17:22 2240Magento 中, 任何一个页面中的 html 代码都来 ... -
Magento 中的事件
2013-01-06 14:19 1277magento的事件机制就跟dural的hook机制一样,为了 ... -
Magento Adminhtml Form
2012-11-29 17:37 1541开发Magento后台的时候经常用到表单(Varien_D ... -
Magento 添加后台管理 addColumn
2012-11-16 17:07 1938复选框 $row->getData($this-& ... -
Magento 自动添加属性 自动添加表
2012-09-03 13:43 19121自动添加属性字段 config.xml <r ... -
Magento 临时替代默认店铺
2012-08-22 10:10 1418多店铺主题切换http://hudeyong926.ite ... -
Magento API v2 之webservice
2012-07-31 17:36 1760http://yourserver.com/api/v2_so ... -
Magento 添加后台管理
2012-07-27 11:13 4296后台菜单显示点击后404,如果adminhtml.xml配 ... -
Magento 如何调用static block
2012-04-19 15:53 1699若想在站点页面的某个地方放点静态的内容,比如广告,或者是促 ... -
Magento 数据库EVA
2012-03-14 16:30 2940实体,属性和值(EVA)数据库架构排在第一,非常难以把握。E ... -
Magento API v1 之webservice
2012-03-09 12:18 3064sales/etc/api.xml <?xml ver ... -
magento model collection
2012-03-09 12:03 4248colleciton的启用 Ticket\Model\L ...
相关推荐
magento数据结构分析 magento数据字典
magento的SMTP插件magento的SMTP插件magento的SMTP插件
magik shoes magento 模板, magento 1.7 模板
Magento插件开发手册 Magento Extension Developers Guide
深入理解Magento 由精东博客下载下来制作成pdf
主要包括的内容有:magento的常用设置、Magento模板制作教程、Magento商城_目录结构说明、Magento中文教程实用文档、常用的xml的文件的作用以及自定义模块的应用
Magento 2 Beginners Guide by Gabriel Guarino English | 14 Mar. 2017 | ASIN: B01MS81BQX | 442 Pages | AZW3 | 31.84 MB Key Features Set up and manage your very first online store with a friendly and ...
[Packt Publishing] Magento 扩展开发入门教程 (英文版) [Packt Publishing] Getting Started with Magento Extension Development (E-Book) ☆ 图书概要:☆ Understand Magento extensions, and build your own...
快速在服务器上复制为另一个站,版本用的是magento,php语言
Athlete Magento主题,兼容Magento 1.9.x, 1.8.x, 1.7.x ,特点:完全自适应(响应式布局),自定义子主题,无限颜色,完全自定义,一键安装演示,小工具化横幅系统,颜色选择,MEGA菜单,多商店支持,自定义产品...
如何给产品描述里的关键字、字词批量添加链接?我想大家一直在的这样的...并支持到Magento1.6.2 说明请查看:http://www.hicoogle.com/magento-gei-chan-pin-miao-shu-guan-jian-zi-pi-liang-lian-jie-cha-jian.html
magento2 developers cookbook, magento 开发手册,magento教程
Magento 的配置系统就像是 Magento 的心脏,支撑着 Magento 的运行。这套 配置系统掌管着几乎所有“module/model/class /template/etc”。它把整个 Magento 系统抽象出来,用一个配置文件来描述。这里的“配置文件”...
Magento 图片延时加载插件,用来解决网站速度慢或者图片数量多的问题
Magento是一款新的、专业的、开放源代码的电子商务解决方案,它提供前所未有的灵活性和可控制性。有了Magento,在你开展电子商务业务的时候就不会觉得很困难了。Magento 的特色1 容易整合Magento 让整合第三方厂商...
Magento Magento商城 Magento目录结构
hellowired magento 模板,magento 1.7 使用. 外贸站模板。
magento转移服务器magento建立多站点总结
Chapter 1, Installing Magento 2 on Apache and NGINX, is a totally different ballgame compared to Magento 1. Where Magento 1 could be installed through FTP or SSH, Magento 2 is installable only via the...