深入理解magento

上传人:xins****2008 文档编号:112538965 上传时间:2019-11-06 格式:DOCX 页数:80 大小:230.71KB
返回 下载 相关 举报
深入理解magento_第1页
第1页 / 共80页
深入理解magento_第2页
第2页 / 共80页
深入理解magento_第3页
第3页 / 共80页
深入理解magento_第4页
第4页 / 共80页
深入理解magento_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《深入理解magento》由会员分享,可在线阅读,更多相关《深入理解magento(80页珍藏版)》请在金锄头文库上搜索。

1、Magento模块开发教程第一章Magento强大的配置系统Magento的配置系统就像是Magento的心脏,支撑着Magento的运行。这套 配置系统掌管着几乎所有“module/model/class /template/etc”。它把整个 Magento系统抽象出来,用一个配置文件来描述。这里的“配置文件”并不是一 个物理上存在的文件,而是Magento根据当前的系统状态动态生成的一段XML。 大多数的PHP开发者并不习惯于这样抽象层,因为它增加的编程的复杂性。但是 这样的抽象提供了无与伦比的灵活性,允许你覆盖几乎任何系统的默认行为。首先,让我们写一个简单的插件来看看这个所谓的“配置文

2、件”长什么样。虽然 我已经提供的现成的代码,但是还是建议你自己建立这个插件,把整个流程走一 遍有助于你的理解。设置插件的目录结构我们将要创建一个Magento的模块【注:Magento的插件不叫plug-in,叫 module,翻译成模块】。Magento的模块由php和xml文件组成,目的是扩展或 者覆盖系统的行为,比如为订单增加数据模型,更改一个类的方法,或者增加 一个全新的功能。【注:Magento自带的那些功能也都是基于模块的,比如用户 注册,商品展示,结账流程等等。Magento给我的感觉就是一切皆模块,和 Eclipse的插件体系结构有点像】大多数Magento的系统模块的结构和我

3、们将要构建的插件的结构是一样的。 Magento的系统模块在以下目录 app/code/core/Mage每一个子目录都是一个单独的模块。这些模块是由Magento官方开发的。我们安 装完Magento以后,所使用的功能就是来自这些模块。我们自己创建的模块应该 放在如下目录app/code/local/Packagename“Packagename”应该是一个唯一的字符串,用来标识你的代码。通常人们使用 公司名字作为Packagename,比如 app/code/local/Microsoft由于我在做我自己的Magento项目,我将使用我自己的域名 “Alanstormdotcom”。然后,

4、我们要创建以下目录结构 app/code/local/Alanstormdotcom/Configviewer/Blockapp/code/local/Alanstormdotcom/Configviewer/controllers app/code/local/Alanstormdotcom/Configviewer/etc app/code/local/Alanstormdotcom/Configviewer/Helper app/code/local/Alanstormdotcom/Configviewer/Model app/code/local/Alanstormdotcom/Con

5、figviewer/sql你的插件并不一定需要包含以上所有的目录,但是为了以后开发方便,我们还是 在一开始就把目录创建好。接下来我们要创建两个文件,一个是config. xml, 放在etc目录下面app/code/local/Alanstormdotcom/Configviewer/etc/config. xml 文件内容如下 modules0. 1. 0/modules第二个文件需要在如下位置创建app/etc/modules/Alanstormdotcom_Configviewer. xml第二个文件应该遵循如下命名规则“Packagename_Modulename. xml”,文件内容

6、 如下modulestruelocal/modules我们先不管这些文件是干什么的,以后会解释。建立好这两个文件以后,你的模 块的骨架就己经完成了。Magento己经知道你的模块存在,但是现在你的模块不 会做任何事情。我们来确认一下Magento确实装载了你的模块 1.清空Magento缓存2. 在后台管理界面,进入System-Configuration-Advanced3. 展开“Disable Modules Output”4. 确认“Alanstormdotcom_Configviewer” 显示出来了如果你看到“Alanstormdotcom_Configviewer”,那么恭喜你,

7、你己经成功创建 了你第一个Magento模块!创建模块逻辑我们之前创建的模块不会做任何事情,下面我们来为这个模块加入逻辑1. 检查showConfig查询字符串是否存在2. 如果showConfig存在,那么检查showConfigFormat查询字符串是否存在3. 如果showConfigFormat存在,那么输出指定格式的配置信息,否则输出默认格式的配置 信息4. 终止执行流程首先更改我们的config.xml文件 modules. . . controller_front_init_routersobservers singletonAlanstormdotcom_Configviewe

8、r_Model_ObservercheckForConfigRequest /observers然后创建如下文件Alanstormdotcom/Configviewer/Model/Observer. php 输入以下内容 request = $observer-getEvent () -getData ( front) -getRequest ();if ($this-request-self:FLAG_SHOW_CONFIG = true,) $this-setHeader();$thi s-outputConf i g ();private function setHeader() $f

9、ormat =isset($this-request-self:FLAG_SHOW_CONFIG_FORMAT) ?$this-request-self:FLAG_SHOW_CONFIG_FORMAT:,xml,switch($format) case texty :header(Content-Type: text/plain); break; default:header (Content-Type: text/xml);private function outputConfigO die (Mage: :app () -getConfig() -getNode () -asXML();好

10、了,代码编辑结束。清空你的Magento缓存,输入如下URL http:/magento. example, com/?showConfig=true【注:根据文中的配置,不难看出任何指向Magento的URL加了?showConfig=true以后,都会输出同样的内容,正常的执行流程会被终止。】配置文件分析打开上述URL,你应该看到一个巨大的XML文件。这个文件描述了当前 Magento系统的状态。它列出了所有的模块,数据模型,类,事件,监听器等等。 举个例子,如果你搜索如下字符串 Configviewer_Model_0bserver你会发现刚刚Y尔创建1那个类被列出来了。Magento会

11、解析每个模块的 config. xml,并把它们包含在这个全局配置中。这个配置文件有啥用?到目前为止,我们所作的事情似乎没什么意义,但是这个配置文件却是理 解Magento的关键因素。你创建的每一个模块都会被加到这个配置文件中,任何 时候,你需要调用一个系统功能的时候,Magento都会通过这个配置文件来查 询相应的模块和功能。举个简单的例子,如果你懂MVC的话,你应该和“helper class”之类概念的打过交道$helper_salesrule = new Mage_SalesRule_Helper();Magento抽象了 PHP的类声明方式。在Magento系统中,上面的代码等同于 $helper_salesrule = Mage:helper( salesrule);Magento将通过以下逻辑来处理这行代码1. 在配置文件中查找helpers/标签2. 在helpers/里面查找salesrule /标签3. 在sales/里面查找class /标签4. 实例化从#3 找到的类(Mage_SalesRule_Helper)Magento总是通过配置文件来获得类名,这个逻辑看起来

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号