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中并不常见,但 是它可以让你清晰的扩展或者替换系统的某一部分。
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中并不常见,但 是它可以让你清晰的扩展或者替换系统的某一部分。
相关文章推荐
- 插件: images and custom options,magento添加多图片,自定义选项custom options,catelog,分类的插件以及使用方法!!!
- 当中有介绍如何在DNN中添加自定义模块的方法
- 如何给magento的分类添加自定义属性
- 插件: images and custom options,magento添加多图片,自定义选项custom options,catelog,分类的插件以及使用方法!!!
- python 如何能否自定义模块路径? 添加自定义模块 函数 python
- 关于 BootStarp 弹出框(Popover)插件如何在弹层添加自定义 html
- VB6 如何添加自定义函数 模块 把代码放到一个模块中
- 如何单独添加nginx自定义模块
- 如何添加缓存支持的Magento模块
- 如何单独添加nginx自定义模块
- 如何在xen blktap中添加自定义虚拟磁盘接口
- VS中如何自定义新建文件模板(添加自定义版权信息)
- 如何在Cuyahoga中添加公告模块
- 教你如何自定义百度分享插件以及bshare分享插件的分享按钮
- iOS中如何添加自定义的字体
- 如何在项目采购管理系统中采购模块里的主表里添加字段
- yii2 添加 自定义 组件 custom component,以及模块 module 原理的详解剖析
- Nagios+pnp4nagios+rrdtool 安装配置为nagios添加自定义插件(三)
- 织梦添加自定义字段“附件” 如何修改超链接附件URL地址
- 在IPython下如何将常用模块的目录添加到模块的搜索路径下