第一章 深入理解Magento - Magento强大的配置系统

发布时间:2025-03-29 点击:21
magento的配置系统就像是magento的心脏,支撑着magento的运行。这套配置系统掌管着几乎所有“module/model/class/template/etc”。它把整个magento系统抽象出来,用一个配置文件来描述。这里的“配置文件”并不是一个物理上存在的文件,而是magento根据当前的系统状态动态生成的一段xml。大多数的php开发者并不习惯于这样抽象层,因为它增加的编程的复杂性。但是这样的抽象提供了无与伦比的灵活性,允许你覆盖几乎任何系统的默认行为。
首先,让我们写一个简单的插件来看看这个所谓的“配置文件”长什么样。虽然我已经提供的现成的代码,但是还是建议你自己建立这个插件,把整个流程走一遍有助于你的理解。
设置插件的目录结构
我们将要创建一个magento的模块【译者注: magento的插件不叫plug-in,叫module,翻译成模块】。magento的模块由php和xml文件组成,目的是扩展或者覆盖系统的行为,比如为订单增加数据模型,更改一个类的方法,或者增加一个全新的功能。【译者注:magento自带的那些功能也都是基于模块的,比如用户注册,商品展示,结账流程等等。magento给我的感觉就是一切皆模块,和eclipse的插件体系结构有点像】
大多数magento的系统模块的结构和我们将要构建的插件的结构是一样的。magento的系统模块在以下目录
app/code/core/mage
每一个子目录都是一个单独的模块。这些模块是由magento官方开发的。我们安装完magento以后,所使用的功能就是来自这些模块。我们自己创建的模块应该放在如下目录
app/code/local/packagename
“packagename”应该是一个唯一的字符串,用来标识你的代码。通常人们使用公司名字作为packagename,比如
app/code/local/microsoft
由于我在做我自己的magento项目,我将使用我自己的域名“alanstormdotcom”。 然后,我们要创建以下目录结构
app/code/local/alanstormdotcom/configviewer/block
app/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/configviewer/sql
你的插件并不一定需要包含以上所有的目录,但是为了以后开发方便,我们还是在一开始就把目录创建好。接下来我们要创建两个文件,一个是config.xml,放在etc目录下面
app/code/local/alanstormdotcom/configviewer/etc/config.xml
文件内容如下
[xhtml]view plaincopy
<config> <modules> <alanstormdotcom_configviewer> <version>0.1.0</version> </alanstormdotcom_configviewer> </modules> </config>
第二个文件需要在如下位置创建
app/etc/modules/alanstormdotcom_configviewer.xml
第二个文件应该遵循如下命名规则“packagename_modulename.xml”,文件内容如下
[xhtml]view plaincopy
<config> <modules> <alanstormdotcom_configviewer> <active>true</active> <codepool>local</codepool> </alanstormdotcom_configviewer> </modules> </config>
我们先不管这些文件是干什么的,以后会解释。建立好这两个文件以后,你的模块的骨架就已经完成了。magento已经知道你的模块存在,但是现在你的模块不会做任何事情。我们来确认一下magento确实装载了你的模块
清空magento缓存 在后台管理界面,进入 system->configuration->advanced 展开“disable modules output” 确认“alanstormdotcom_configviewer”显示出来了
如果你看到“alanstormdotcom_configviewer”,那么恭喜你,你已经成功创建了你第一个magento模块!
创建模块逻辑
我们之前创建的模块不会做任何事情,下面我们来为这个模块加入逻辑
1. 检查“showconfig”查询字符串是否存在
2. 如果“showconfig”存在,那么检查“showconfigformat”查询字符串是否存在
3. 如果“showconfigformat”存在,那么输出指定格式的配置信息,否则输出默认格式的配置信息
4. 终止执行流程
首先更改我们的config.xml文件
[xhtml]view plaincopy
<config> <modules>…</modules> <global> <events> <controller_front_init_routers> <observers> <alanstormdotcom_configviewer_model_observer> <type>singleton</type> <class>alanstormdotcom_configviewer_model_observer</class> <method>checkforconfigrequest</method> </alanstormdotcom_configviewer_model_observer> </observers> </controller_front_init_routers> </events> </global> </config>
然后创建如下文件
alanstormdotcom/configviewer/model/observer.php
输入以下内容
[php]view plaincopy
<?php classalanstormdotcom_configviewer_model_observer{ constflag_show_config=\\\’showconfig\\\’; constflag_show_config_format=\\\’showconfigformat\\\’; private$request; publicfunctioncheckforconfigrequest($observer){ $this->request=$observer->getevent()->getdata(\\\’front\\\’)->getrequest(); if($this->request->{self::flag_show_config}===\\\’true\\\’){ $this->setheader(); $this->outputconfig(); } } privatefunctionsetheader(){ $format=isset($this->request->{self::flag_show_config_format})? $this->request->{self::flag_show_config_format}:\\\R

现在可以审核一下吗明天放假了
云服务器的服务器租用
打开网站后出现错误这是什么原因
座机号是真的但是公司正在初办之中
如何选择便宜稳定的香港云服务器
亚马逊云服务器怎么取消
阿里云ecs云服务器购买
最近老是出现后台显示这个持续访问