翻譯:hailong zhang
magento的配置系統就像是magento的心臟,支撐著magento的執行。這套配置系統掌管著幾乎所有「module/model /class/template/etc」。它把整個magento系統抽象出來,用乙個配置檔案來描述。這裡的「配置檔案」並不是乙個物理上存在的文 件,而是magento根據當前的系統狀態動態生成的一段xml。大多數的php開發者並不習慣於這樣抽象層,因為它增加的程式設計的複雜性。但是這樣的抽象 提供了無與倫比的靈活性,允許你覆蓋幾乎任何系統的預設行為。
首先,讓我們寫乙個簡單的外掛程式來看看這個所謂的「配置檔案」長什麼樣。雖然我已經提供的現成的** ,但是還是建議你自己建立這個外掛程式,把整個流程走一遍有助於你的理解。
設定外掛程式的目錄結構
我們將要建立乙個magento的模組【譯者注: magento的外掛程式不叫plug-in,叫module,翻譯成模組】。magento的模組由php和xml檔案組成,目的是擴充套件或者覆蓋系統的行 為,比如為訂單增加資料模型,更改乙個類的方法,或者增加乙個全新的功能。【譯者注:magento自帶的那些功能也都是基於模組的,比如使用者註冊,商品 展示,結賬流程等等。magento給我的感覺就是一切皆模組,和eclipse的外掛程式體系結構有點像】
由於我在做我自己的magento專案,我將使用我自己的網域名稱「alanstormdotcom」。 然後,我們要建立以下目錄結構
檔案內容如下
xml**
<
config
>
<
modules
>
<
alanstormdotcom_configviewer
>
<
version
>0.1.0
version
>
alanstormdotcom_configviewer
>
modules
>
config
>
第二個檔案應該遵循如下命名規則「packagename_modulename.xml」,檔案內容如下
xml**
<
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檔案
xml**
<
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
輸入以下內容
xml**
phpclass alanstormdotcom_configviewer_model_observer === 'true')
} private function setheader() ) ?
$this->request-> : 'xml';
switch($format)
} private function outputconfig()
} ?>
好了,**編輯結束。清空你的magento快取,輸入如下url
【譯者注: 根據文中的配置,不難看出任何指向magento的url加了「?showconfig=true」以後,都會輸出同樣的內容,正常的執行流程會被終止。】
配置檔案分析
開啟上述url,你應該看到乙個巨大的xml檔案。這個檔案描述了當前magento系統的狀態。它列出了所有的模組,資料模型,類,事件,***等等。舉個例子,如果你搜尋如下字串
configviewer_model_observer
你會發現剛剛你建立的那個類被列出來了。magento會解析每個模組的config.xml,並把它們包含在這個全域性配置中。
這個配置檔案有啥用?
到目前為止,我們所作的事情似乎沒什麼意義,但是這個配置檔案卻是理解magento的關鍵因素。你建立的每乙個模組都會被加到這個配置檔案中,任 何時候,你需要呼叫乙個系統功能的時候,magento都會通過這個配置檔案來查詢相應的模組和功能。舉個簡單的例子,如果你懂mvc的話,你應該和 「helper class」之類概念的打過交道
php**
$helper_salesrule = new mage_salesrule_helper();
magento抽象了php的類宣告方式。在magento系統中,上面的**等同於
php**
$helper_salesrule = mage::helper('salesrule');
magento將通過以下邏輯來處理這行**
在配置檔案中查詢標籤
在裡面查詢 標籤
在裡面查詢 標籤
例項化從#3找到的類(mage_salesrule_helper)
magento總是通過配置檔案來獲得類名,這個邏輯看起來有些複雜,但這樣做的優點也很明顯,我們可以不需要更改magento的**就能更改 magento的核心功能。【譯者注: 在這個例子中,我們可以通過修改配置檔案用我們自己的salesrule_helper類來替換原來那個】這種高度抽象的程式設計方式在php中並不常見,但 是它可以讓你清晰的擴充套件或者替換系統的某一部分。
第一章 Magento強大的配置系統
深入理解magento 第一章 magento強大的配置系統 翻譯 hailong zhang b 第一章 magento強大的配置系統 b 首先,讓我們寫乙個簡單的外掛程式來看看這個所謂的 配置檔案 長什麼樣。雖然我已經提供的現成的 但是還是建議你自己建立這個外掛程式,把整個流程走一遍有助於你的理...
python第一章筆記 第一章 基礎
參與除法的兩個數中有乙個數為浮點數,結果也為浮點數 如 1.0 2,1 2.0,1.0 2.0 python print 1.0 2 結果 0.5 print 1 2.0 結果 0.5 print 1.0 2.0 結果 0.5 整數 整數,計算結果的小數部分被截除,只保留整數部分 不會四捨五入 如 ...
第一章 Linux環境配置
1.修改主機名 vi etc sysconfig network 注意 按,進入編輯模式。按,再輸入 wq 退出儲存 2.修改ip 1 先找到虛擬機器上的閘道器ip 2 輸入命令 vi etc sysconfig network scripts ifcfg eth0 新增紅框部分,gateway輸入...