Magento 模块开发之模块重写
2014-05-27 15:58
232 查看
在这一章节,我们来了解一下关于 Magento 核心类的重写机制,当重写后,就相当于告诉 Magento 使用我们重写后的类来替代原始的核心类
重写 - 在 Magento 模块开发中占有一席之地, 现在让我们了解下,为什么要重写:
现在让我们进入旅程吧
Blocks
假设我们现在需要在 Mage_Catalog_Block_Product 核心类中添加一些方法或变动,正因为它是一个核心类,所以我们需要重写它,这样核心类就可以不作任何变动,首先我们在 config.xml 里写入以下代码:
现在在我们的 Block 文件夹中新增该类, (这属于我们自定义的模块)
这样操作的话,无论 Magento 什么时候创建 catalog/product 对象,它将会实例化我们新建的类,而不是核心类, 现在我们可以新增更多方法或者重写现有的方法
现在如果你仔细的话, 你会发现我们的类继承的是 Mage_Catalog_Block_Product, 这不是必须的, 但这样做的好处是自动继承了所有父类的方法, 我们就不必一一再去自己定义了
这里我再添加一个示例,关于 Block 内 Grid / From / Tabs 的重写
这里只需要注意一点, 有可能由于类名过长的关系造成阅读上的影响,就像如上示例,但注意不能换行,因为一旦换行前面的空格会造成影响,所以标签 <customer_edit_tabs>...</customer_edit_tabs> 必须保持在一行
Models
和 Block 比较相似, 我们可以重写 Models, 假设我们想要重写 Product 类,
例如: Mage_Catalog_Model_Product, 在 config.xml 中写入以下内容
同时,我们新建重写的类
Helpers
Helpers 同样也可以被重写, 在 config.xml 中写入
另外值得注意的是, 我们只可以重写 Magento 能够实例化的类, 但就像 Magento 中一些抽象类, Mage_Catalog_Block_Product_Abstract, 像这种就不能够被重写
Controllers
想要重写一个核心 controller, 这是我们需要做的
现在我们就来创建 controller 文件
Path: Excellence/Test/controllers/Checkout/CartController.php
两点关于 controller 重写和其他重写的不同之处
重写 - 在 Magento 模块开发中占有一席之地, 现在让我们了解下,为什么要重写:
Blocks
假设我们现在需要在 Mage_Catalog_Block_Product 核心类中添加一些方法或变动,正因为它是一个核心类,所以我们需要重写它,这样核心类就可以不作任何变动,首先我们在 config.xml 里写入以下代码:
这里我再添加一个示例,关于 Block 内 Grid / From / Tabs 的重写
Models
和 Block 比较相似, 我们可以重写 Models, 假设我们想要重写 Product 类,
例如: Mage_Catalog_Model_Product, 在 config.xml 中写入以下内容
Helpers 同样也可以被重写, 在 config.xml 中写入
Controllers
想要重写一个核心 controller, 这是我们需要做的
Path: Excellence/Test/controllers/Checkout/CartController.php
相关文章推荐
- Magento 模块开发之模块重写
- MAGENTO 开发之模块重写
- magento模块 -- 开发magento下IPS支付模块
- magento 模块开发 实例-magento基本URL结构解析
- Magento 模块开发之 System.xml 配置详解
- magento 后台模块开发之设定时间 显示小时和分钟
- magento 模块开发:在后台新增TOP栏项目
- magento模块 -- 开发新的magento模块修改magento支付模块的onepage支付流程
- Magento模块开发手册(四)Magento 布局、块 、模板
- magento的运费模块开发教程(Customize Magento Shipping Module Tutorial)
- Magento 新闻模块开发教程 (九) 建立Block
- Magento模块开发手册(二)magento的配置
- Magento模块开发教程
- Magento 新闻模块开发教程 (二) 激活你的模块
- Magento 新闻模块开发教程 (一) 创建骨架目录
- magento 模块开发 实例-magento基本URL结构解析
- 如果用seagull php框架开发一个类似zen cart,Oscommerce,magento这样的模块会什么样
- 重写某个magento模块的某个controller
- Magento 新闻模块开发教程 (四) 创建模块的xml配置文件
- Magento模块中添加计划任务Cron Job【magento二次开发】