第一章 深入理解Magento - Magento強(qiáng)大的配置系統(tǒng)

發(fā)布時(shí)間:2024-04-15
magento的配置系統(tǒng)就像是magento的心臟,支撐著magento的運(yùn)行。這套配置系統(tǒng)掌管著幾乎所有“module/model/class/template/etc”。它把整個(gè)magento系統(tǒng)抽象出來(lái),用一個(gè)配置文件來(lái)描述。這里的“配置文件”并不是一個(gè)物理上存在的文件,而是magento根據(jù)當(dāng)前的系統(tǒng)狀態(tài)動(dòng)態(tài)生成的一段xml。大多數(shù)的php開(kāi)發(fā)者并不習(xí)慣于這樣抽象層,因?yàn)樗黾拥木幊痰膹?fù)雜性。但是這樣的抽象提供了無(wú)與倫比的靈活性,允許你覆蓋幾乎任何系統(tǒng)的默認(rèn)行為。
首先,讓我們寫(xiě)一個(gè)簡(jiǎn)單的插件來(lái)看看這個(gè)所謂的“配置文件”長(zhǎng)什么樣。雖然我已經(jīng)提供的現(xiàn)成的代碼,但是還是建議你自己建立這個(gè)插件,把整個(gè)流程走一遍有助于你的理解。
設(shè)置插件的目錄結(jié)構(gòu)
我們將要?jiǎng)?chuàng)建一個(gè)magento的模塊【譯者注: magento的插件不叫plug-in,叫module,翻譯成模塊】。magento的模塊由php和xml文件組成,目的是擴(kuò)展或者覆蓋系統(tǒng)的行為,比如為訂單增加數(shù)據(jù)模型,更改一個(gè)類的方法,或者增加一個(gè)全新的功能?!咀g者注:magento自帶的那些功能也都是基于模塊的,比如用戶注冊(cè),商品展示,結(jié)賬流程等等。magento給我的感覺(jué)就是一切皆模塊,和eclipse的插件體系結(jié)構(gòu)有點(diǎn)像】
大多數(shù)magento的系統(tǒng)模塊的結(jié)構(gòu)和我們將要構(gòu)建的插件的結(jié)構(gòu)是一樣的。magento的系統(tǒng)模塊在以下目錄
app/code/core/mage
每一個(gè)子目錄都是一個(gè)單獨(dú)的模塊。這些模塊是由magento官方開(kāi)發(fā)的。我們安裝完magento以后,所使用的功能就是來(lái)自這些模塊。我們自己創(chuàng)建的模塊應(yīng)該放在如下目錄
app/code/local/packagename
“packagename”應(yīng)該是一個(gè)唯一的字符串,用來(lái)標(biāo)識(shí)你的代碼。通常人們使用公司名字作為packagename,比如
app/code/local/microsoft
由于我在做我自己的magento項(xiàng)目,我將使用我自己的域名“alanstormdotcom”。 然后,我們要?jiǎng)?chuàng)建以下目錄結(jié)構(gòu)
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
你的插件并不一定需要包含以上所有的目錄,但是為了以后開(kāi)發(fā)方便,我們還是在一開(kāi)始就把目錄創(chuàng)建好。接下來(lái)我們要?jiǎng)?chuàng)建兩個(gè)文件,一個(gè)是config.xml,放在etc目錄下面
app/code/local/alanstormdotcom/configviewer/etc/config.xml
文件內(nèi)容如下
[xhtml]view plaincopy
<config> <modules> <alanstormdotcom_configviewer> <version>0.1.0</version> </alanstormdotcom_configviewer> </modules> </config>
第二個(gè)文件需要在如下位置創(chuàng)建
app/etc/modules/alanstormdotcom_configviewer.xml
第二個(gè)文件應(yīng)該遵循如下命名規(guī)則“packagename_modulename.xml”,文件內(nèi)容如下
[xhtml]view plaincopy
<config> <modules> <alanstormdotcom_configviewer> <active>true</active> <codepool>local</codepool> </alanstormdotcom_configviewer> </modules> </config>
我們先不管這些文件是干什么的,以后會(huì)解釋。建立好這兩個(gè)文件以后,你的模塊的骨架就已經(jīng)完成了。magento已經(jīng)知道你的模塊存在,但是現(xiàn)在你的模塊不會(huì)做任何事情。我們來(lái)確認(rèn)一下magento確實(shí)裝載了你的模塊
清空magento緩存 在后臺(tái)管理界面,進(jìn)入 system->configuration->advanced 展開(kāi)“disable modules output” 確認(rèn)“alanstormdotcom_configviewer”顯示出來(lái)了
如果你看到“alanstormdotcom_configviewer”,那么恭喜你,你已經(jīng)成功創(chuàng)建了你第一個(gè)magento模塊!
創(chuàng)建模塊邏輯
我們之前創(chuàng)建的模塊不會(huì)做任何事情,下面我們來(lái)為這個(gè)模塊加入邏輯
1. 檢查“showconfig”查詢字符串是否存在
2. 如果“showconfig”存在,那么檢查“showconfigformat”查詢字符串是否存在
3. 如果“showconfigformat”存在,那么輸出指定格式的配置信息,否則輸出默認(rèn)格式的配置信息
4. 終止執(zhí)行流程
首先更改我們的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>
然后創(chuàng)建如下文件
alanstormdotcom/configviewer/model/observer.php
輸入以下內(nèi)容
[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
上一個(gè):白酒消費(fèi)稅的納稅環(huán)節(jié),法律白酒消費(fèi)稅最低計(jì)稅價(jià)格核定標(biāo)準(zhǔn)
下一個(gè):還在到處詢問(wèn)搖床的保養(yǎng)方法嗎?看這篇就夠了

什么是古樹(shù)茶?古樹(shù)茶的樹(shù)齡是多大?
茶樹(shù)抗凍害栽培技術(shù)
環(huán)??破肇b印刷企業(yè)的揮發(fā)性有機(jī)物排放問(wèn)題自查要點(diǎn)
門(mén)鎖怎么用手機(jī)開(kāi),手機(jī)怎樣開(kāi)鎖
看完本篇你會(huì)對(duì)ECOM紫外檢測(cè)器DAD400有更多了解
網(wǎng)站運(yùn)營(yíng)小白應(yīng)如何制定推廣方案
常溫保鮮陶罐的技術(shù)性能與使用方法
ssd硬盤(pán)與機(jī)械硬盤(pán),ssd跟機(jī)械硬盤(pán)的差別
工業(yè)高壓風(fēng)機(jī)故障排除有以下三個(gè)排除方法
無(wú)菌過(guò)濾集菌儀的使用注意事項(xiàng)
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos