服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
 热线电话: #
当前位置: 主页 > php教程 > magento教程 >

如何修改、扩展并重写Magento代码

时间:2011-11-21 10:56来源:未知 作者:最模板 点击:
如何修改、扩展并重写magento代码 (Module),最模板提供以下步骤参考: 第一步,你需要创建属于你自己 代码 的命名空间,例如App,为了方便与大家分享代码,我将空间命名为App。 app/co

如何修改、扩展并重写magento代码(Module),最模板提供以下步骤参考:

第一步,你需要创建属于你自己代码的命名空间,例如App,为了方便与大家分享代码,我将空间命名为App。

app/code/core/local/App/

假如你现在打算修改Mage/Catalog/Block/Breadcrumbs.php这个文件,你可以在你的命名空间,App里添加一个新的模块 “Catalog”。接下来创建块(Block)目录,并复制Breadcrumbs.php到你的新目录中。这里还需要你创建一个config.xml 配置文件。

app/code/core/local/App/Catalog/Block/Breadcrumbs.php app/code/core/local/App/Catalog/Block/etc/config.xml

修改Breadcrumbs.php的类名为App_Catalog_Block_Breadcrumbs,并继承原类名Mage_Catalog_Block_Breadcrumbs。现在,你需要激活你的新模块,这样magento才能够知道你的新模块。创建文件app/etc/modules/App_All.xml,添加如下代码。

 

<?xml version="1.0"?> <config> <modules> <App_Catalog> <active>true</active> <codePool>local</codePool> </App_Catalog> </modules> </config>

下面我们需要一个特殊的标签来复写掉Breadcrumbs,下面我们通过模块的配置文件来实现。

重写Magento区块(Blocks)

编辑文件”app/code/local/App/Catalog/etc/config.xml”

<?xml version="1.0" encoding="UTF-8"?> <config> <modules> <App_Catalog> <version>0.1.0</version> </App_Catalog> </modules> <global> <blocks> <catalog> <rewrite> <breadcrumbs>App_Catalog_Block_Breadcrumbs</breadcrumbs> </rewrite> </catalog> </blocks> </global> </config>

我们需要添加一个”blocks” 标签,或者在已经存在的”blocks”标签中添加内容。然后在模块名后面添加rewrite标签,在这个例子中模块名是”catalog”。然后我们看 “breadcrumbs”标签,这个标签帮助magento找到我们我们想修改的块。在我们的列子中,breadcrumbs是Magento核心代码 中的类名app/code/core/Mage/Catalog/Block/Breadcrumbs.php。如果你有更多的目录层级,可以用下滑线来分隔。

例如:

<blocks> <catalog> <rewrite> <category_view>App_Catalog_Block_Category_View</category_view> </rewrite> </catalog> </blocks>

在这个例子中,我们重写了app/code/core/Mage/Catalog/Block/Category/View.php。

在breadcrumbs标签中的值是你的类名,这样Magento就可以获取你的类,因为类名与你的目录名一致。用过zend framework的人都知道,自动加载auto loader这个东西,它会跟你类名中的下滑线去你的目录中需要对应的类文件。记住一点,下滑线代表下一级别的文件夹,如果你的类名与你的文件目录名不一 致,那么Magento根本不会理睬你。

举例来说:

App_Catalog_Block_Breadcrumbs → /app/code/local/App/Catalog/Block/Breadcrumbs.php App_Catalog_Block_Category_View → /app/code/local/App/Catalog/Block/Category/View.php

 

(责任编辑:最模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------