您的位置:首页 > 编程语言 > PHP开发

magento如何添加自定义插件(模块

2010-07-20 08:32 302 查看
大多数Magento的系统模块的结构和我们将要构建的插件的结构是一样的。Magento的系统模块在以下目录

app/code/core/Mage

每一个子目录都是一个单独的模块。这些模块是由Magento官方开发的。我们安装完Magento以后,所使用的功能就是来自这些模块。我们自己创建的
模块应该放在如下目录

app/code/local/Packagename

“Packagename”应该是一个唯一的字符串,用来标识你的代码。通常人们使用公司名字作为Packagename,这个是随便起的,只要不与别的
模块名字相同就可以了(注:相同的话会覆盖)

比如我将使用域名“Bmagentodotcom”。
然后,我们要创建以下目录结构(注:本例是一个用来查看系统config.xml合集的模块,为了开发方便,最好是都做个这个模块)





你的插件并不一定需要包含以上所有的目录,但是为了以后开发方便,我们还是在一开始就把目录创建好。接下来我们要创建两个文件,一个是
config.xml,放在etc目录下面

app/code/local/Bmagentodotcom/Configviewer/etc/config.xml

文件内容如下





第二个文件需要在如下位置创建(注:这个文件是用来注册该模块的)

app/etc/modules/Bmagentodotcom_Configviewer.xml

第二个文件应该遵循如下命名规则“Packagename_Modulename.xml”,文件内容如下





建立好这两个文件以后,你的模块的骨架就已经完成了。Magento已经知道你的模块存在,但是现在你的模块
不会做任何事情。我们来确认一下Magento确实装载了你的模块

清空Magento缓存

在后台管理界面,进入 System->Configuration->Advanced

展开“Disable Modules Output”

确认“Bmagentodotcom_Configviewer”显示出来了

如果你看到“Bmagentodotcom_Configviewer”,那么恭喜你,你已经成功创建了你第一个Magento模块!

创建模块逻辑

我们之前创建的模块不会做任何事情,下面我们来为这个模块加入一个查看系统config.xml合集的逻辑:

1. 检查“showConfig”查询字符串是否存在

2. 如果“showConfig”存在,那么检查“showConfigFormat”查询字符串是否存在

3. 如果“showConfigFormat”存在,那么输出指定格式的配置信息,否则输出默认格式的配置信息

4. 终止执行流程

首先更改我们的config.xml文件





然后创建如下文件

Bmagentodotcom/Configviewer/Model/Observer.php

输入以下内容





好了,代码编辑结束。清空你的Magento缓存,输入如下URL

http:
//www.bmagento.com/
?showConfig=true

(注:
根据文中的配置,不难看出任何指向Magento的URL加了“?showConfig=true”以后,都会输出同样的内容,正常的执行流程会被终
止。)

配置文件分析

打开上述URL,你应该看到一个巨大的XML文件。这个文件描述了当前Magento系统的状态。它列出了所有的模块,数据模型,类,事件,监听器
等等。举个例子,如果你搜索如下字符串

Configviewer_Model_Observer

你会发现刚刚你创建的那个类被列出来了。Magento会解析每个模块的config.xml,并把它们包含在这个全局配置中。

这个配置文件有啥用?

到目前为止,我们所作的事情似乎没什么意义,但是这个配置文件却是理解Magento的关键因素。你创建的每一个模块都会被加到这个配置文件中,任
何时候,你需要调用一个系统功能的时候,Magento都会通过这个配置文件来查询相应的模块和功能。举个简单的例子,如果你懂MVC的话,你应该和
“helper class”之类概念的打过交道

$helper_salesrule = new
Mage_SalesRule_Helper();

Magento抽象了PHP的类声明方式。在Magento系统中,上面的代码等同于

$helper_salesrule = Mage::helper(’salesrule’);

Magento将通过以下逻辑来处理这行代码

在配置文件中查找标签

在里面查找 标签

在里面查找 标签

实例化从#3找到的类(Mage_SalesRule_Helper)

Magento总是通过配置文件来获得类名,这个逻辑看起来有些复杂,但这样做的优点也很明显,我们可以不需要更改Magento的代码就能更改
Magento的核心功能。这种高度抽象的编程方式在php中并不常见,但 是它可以让你清晰的扩展或者替换系统的某一部分。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  magento mvc output php url class