magento 模块重写机制
2010-12-22 00:07
344 查看
由magento重写功能所想到的:
1.在etc/config.xml中
第一层为<config>
第二层为<module>,<global>,<admin>,<adminhtml>,<frontend>,<default>等。
2.重写内容
1>block--在config.xml文件中block重写的配置
<global>
<blocks>
<模块名>
<rewrite>
<重写的半类名>类名全名
如:
<global>
<blocks>
<catelog>
<rewrite>
<breadcrumbs>App_Catalog_Block_Breadcrumbs</breadcrumbs>
2>controller---在config.xml文件中的配置
<global>
<rewrite>
<你的控制器的名>
<from><![CDATA[#^/模块名/controller/#]]> </from>
<to>/shopping/cart/</to>
例如:
<global>
<!-- This rewrite rule could be added to the database instead -->
<rewrite>
<!-- This is an identifier for your rewrite that should be unique -->
<!-- THIS IS THE CLASSNAME IN YOUR OWN CONTROLLER -->
<App_Shopping_cart>
<from><![CDATA[#^/checkout/cart/#]]></from>
<!--
- Shopping module matches the router frontname below - checkout_cart
matches the path to your controller Considering the router below,
"/shopping/cart/" will be "translated" to
"/App/Shopping/controllers/CartController.php" (?)
-->
<to>/shopping/cart/</to>
</App_Shopping_cart>
</rewrite>
<!--参考-->
<blocks>
<catalog><class>Mage_Catalog_Block</class></catalog>
</blocks>
</global>
3> controll文件的修改:
首先
# 控制器不会自动加载,所以我们需要包含文件,这里与区块(Block)不一样
然后extends这个包含的文件。
重写方法。
4>修改视图文件:
<app_shopping_cart_index>
<update handle="checkout_cart_index"/>
</app_shopping_cart_index>
访问shopping/cart/index==checkout/cart/index!
5>重写Magento模型
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<App_Customer>
<version>0.1.0</version>
</App_Customer>
</modules>
<global>
<models>
<customer>
<rewrite>
<customer>App_Customer_Model_Customer</customer>
</rewrite>
</customer>
</models>
</global>
</config>
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
}
}
6>重写Magento的模型资源
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<App_Customer>
<version>0.1.0</version>
</App_Customer>
</modules>
<global>
<models>
<customer>
<rewrite>
<customer>App_Customer_Model_Customer</customer>
<address>App_Customer_Model_Address</address>
</rewrite>
</customer>
<customer_entity>
<rewrite>
<address>App_Customer_Model_Entity_Address</address>
</rewrite>
</customer_entity>
</models>
</global>
</config>
class App_Customer_Model_Entity_Address extends Mage_Customer_Model_Entity_Address {
protected function _afterSave(Varien_Object $address) {
// Write your code
}
}
1.在etc/config.xml中
第一层为<config>
第二层为<module>,<global>,<admin>,<adminhtml>,<frontend>,<default>等。
2.重写内容
1>block--在config.xml文件中block重写的配置
<global>
<blocks>
<模块名>
<rewrite>
<重写的半类名>类名全名
如:
<global>
<blocks>
<catelog>
<rewrite>
<breadcrumbs>App_Catalog_Block_Breadcrumbs</breadcrumbs>
2>controller---在config.xml文件中的配置
<global>
<rewrite>
<你的控制器的名>
<from><![CDATA[#^/模块名/controller/#]]> </from>
<to>/shopping/cart/</to>
例如:
<global>
<!-- This rewrite rule could be added to the database instead -->
<rewrite>
<!-- This is an identifier for your rewrite that should be unique -->
<!-- THIS IS THE CLASSNAME IN YOUR OWN CONTROLLER -->
<App_Shopping_cart>
<from><![CDATA[#^/checkout/cart/#]]></from>
<!--
- Shopping module matches the router frontname below - checkout_cart
matches the path to your controller Considering the router below,
"/shopping/cart/" will be "translated" to
"/App/Shopping/controllers/CartController.php" (?)
-->
<to>/shopping/cart/</to>
</App_Shopping_cart>
</rewrite>
<!--参考-->
<blocks>
<catalog><class>Mage_Catalog_Block</class></catalog>
</blocks>
</global>
3> controll文件的修改:
首先
# 控制器不会自动加载,所以我们需要包含文件,这里与区块(Block)不一样
然后extends这个包含的文件。
重写方法。
4>修改视图文件:
<app_shopping_cart_index>
<update handle="checkout_cart_index"/>
</app_shopping_cart_index>
访问shopping/cart/index==checkout/cart/index!
5>重写Magento模型
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<App_Customer>
<version>0.1.0</version>
</App_Customer>
</modules>
<global>
<models>
<customer>
<rewrite>
<customer>App_Customer_Model_Customer</customer>
</rewrite>
</customer>
</models>
</global>
</config>
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
}
}
6>重写Magento的模型资源
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<App_Customer>
<version>0.1.0</version>
</App_Customer>
</modules>
<global>
<models>
<customer>
<rewrite>
<customer>App_Customer_Model_Customer</customer>
<address>App_Customer_Model_Address</address>
</rewrite>
</customer>
<customer_entity>
<rewrite>
<address>App_Customer_Model_Entity_Address</address>
</rewrite>
</customer_entity>
</models>
</global>
</config>
class App_Customer_Model_Entity_Address extends Mage_Customer_Model_Entity_Address {
protected function _afterSave(Varien_Object $address) {
// Write your code
}
}
相关文章推荐
- 重写某个magento模块的某个controller
- magento 模块重写
- Magento 模块开发之模块重写
- magento模块 -重写某个magento模块的某个controller
- magento 的---分类url---重写机制的bug
- MAGENTO 开发之模块重写
- magento 的---分类url---重写机制的bug
- Magento 模块开发之模块重写
- Magento模块
- JAVA重载和重写、内部类机制
- Python代码模块热更新机制实现(reload)
- 《Linux内核修炼之道》精华分享与讨论(10)——模块机制与“Hello World!” 推荐
- IIS7,IIS7.5 URL重写模块工具
- jQuery 1.5发布 Ajax模块重写
- 如何创建magento模块z之Hello World例子(转)
- Node.js笔记之模块机制
- 关于Magento安装新模块出错的一种情况说明
- Nginx学习之七-模块ngx_epoll_module详解(epoll机制在nginx中的实现)
- 第九章-修改、扩展、重写Magento代码
- Apache重写模块:规则详解