1. 程式人生 > >Magento 的 config.xml 配置引數詳解

Magento 的 config.xml 配置引數詳解

Path: app/code/(codepool)/(NameSpace)/(ModuleName)/etc/config.xml
當你在Magento中新增一個或更新一個module的時候,需要在此config.xml中對所有的models,blocks,classes等做相應的配置。每一個module都有一個單獨的config.xml檔案,但是Magento在載入解析這些config.xml檔案的時候整合在一起分析的。所以每個config.xml檔案都需要有<(ModuleName)> 來區別於其他的模組,如果一個模組下的config.xml檔案中沒有定義<(ModuleName)> ,該檔案中其他的定義將被其他的檔案覆蓋掉。由此,嚴格按照Magento要求的書寫方式來對相應的Module做配置是非常重要的(例如, <(modulename)_setup>)。
XML Structure

<config>
    <modules>
        <(NameSpace_ModuleName)></(NameSpace_ModuleName)>
    </modules>
    <global>
        <models></models>
        <resources></resources>
        <blocks></blocks>
        <helpers></helpers>
        <fieldsets></fieldsets>
        <template></template>
        <events></events>
        <eav_attributes></eav_attributes>
        <(modulename)><!-- custom config variables --></(modulename)>
    </global>
    <admin>
        <attributes></attributes>
        <routers></routers>
        <fieldsets></fieldsets>
    </admin>
    <adminhtml>
        <events></events>
        <global_search></global_search>
        <translate></translate>
        <layout></layout>
        <(modulename)><!-- custom config variables --></(modulename)>
    </adminhtml>
    <install>
        <translate></translate>
    </install>
    <frontend>
        <routers></routers>
        <events></events>
        <translate></translate>
        <layout></layout>
    </frontend>
    <default>
        <(modulename)><!-- custom config variables --></(modulename)>
    </default>
    <stores>
        <admin></admin>
    </stores>
    <websites>
        <admin></admin>
    </websites>
</config>
注意,上面只是一個config.xml配置檔案大致的框架,下面將對每一部分進行細緻分析.
Elements

Element Description Example
1. modules 最基本的定義一個模組的名字,版本和是否依賴於其他模組 。

2. global 由於global的特性,你可以在其他地方定義一個模組,只要global下的<moduleName />正確定義該模組就行。
3. admin adminhtml 對system->configuration下的具體的項進行ACL定義 。
4. install Page。
5. frontend 主要定義router。
6. default
7. stores Adminhtml
8. websites Adminhtml

每個config.xml可大致分為上面表格中的小模組,下面就每一塊進行細分

modules:


XML Structure
    <modules>
         <(NameSpace_ModuleName)>
             <active>[true|false]</active>
             <codePool>[core|community|local]</codePool>
             <depends>
                 <(AnotherNameSpace_ModuleName) />
             </depends>
             <version>(version_number)</version>
         </(NameSpace_ModuleName>
    </modules>
Elements
Element Description
1. active 該模組是否生效(該element的值可在後臺修改)
2. codePool app/code 的具體路徑
3. depends 是否依賴於其他的模組,如果被依賴的模組不存在,它就不active
4. version 定義版本,用於更新和安裝

通常 active, codePool and depends 一般在 app/etc/modules/(NameSpace)_*.xml 檔案中定義,而 version 在相應module下的config.xml 檔案中定義.

global


XML Structure
    <global>
        <models>
            <(modulename)>
                <class>(ClassName_Prefix)</class>
                <resourceModel>(modulename)_(resource_model_type)</resourceModel>
                <(modulename)_(resource_model_type)>
                    <!-- definition -->
                </(modulename)_(resource_model_type)>
                <rewrite><!-- definition --></rewrite>
            </(modulename)>
        </models>
        <resources>
            <(modulename)_setup><!-- definition --></(modulename)_setup>
            <(modulename)_read><!-- definition --></(modulename)_read>
            <(modulename)_write><!-- definition --></(modulename)_write>
        </resources>
        <blocks>
            <(modulename)>
                <class>(ClassName_Prefix)</class>
            </(modulename)>
        </blocks>
        <helpers>
            <(modulename)>
                <class>(ClassName_Prefix)</class>
            </(modulename)>
        </helpers>
        <fieldsets>
            <(page_handle?)>
                <(field_name)>?</(field_name)>
            </(page_handle?)>
        </fieldsets>
        <template>
            <email>
                <(email_template_name)
                    module="(modulename)"
                    translate="[label][,description]"
                    >
                    <!-- definition -->
                <(/email_template_name)>
            </email>
        </template>
        <events>
            <(event_name)>
                <observers><!-- observers --></observers>
            </(event_name)>
        </events>
        <eav_attributes><!-- definition --></eav_attributes>
        <(modulename)><!-- custom config variables --></(modulename)>
    </global>
Elements
Element Description
1. models
2. resources
3. blocks
4. helpers
5. fieldsets
6. template
7. events
8. eav_attributes
9. (modulename) 自定義的變數(如設定郵件或newletter時非常有用)


admin


XML Structure
    <admin>
        <attributes>
            <(attribute_name) />
        <attributes>
        <fieldsets><!-- definition --></fieldsets>
        <routers>
            <(modulename)>
                <use>[standard|admin|default]</use>
                <args>
                    <module>(NameSpace_ModuleName)</module>
                    <frontName>(frontname)</frontName>
                </args>
            </(modulename)>
            <!-- or -->
            <(modulename)>
                <args>
                    <modules>
                        <(NameSpace_ModuleName)
                            before="(AnotherNameSpace_ModuleName)"
                            >
                            (New_ClassName)
                        <(NameSpace_ModuleName)
                </args>
            </(modulename)>
        </routers>
    </admin>
Elements
Element Description
1. attributes
2. fieldsets
3. routers

adminhtml

XML Structure
    <adminhtml>
        <events>
            <(event_name)>
                <observers><!-- observers --></observers>
            </(event_name)>
        </events>
        <global_search>
            <products>
                <class>(modulename)/search_catalog</class>
                <acl>catalog</acl>
            </products>
            <customers>
                <class>adminhtml/search_customer</class>
                <acl>customer</acl>
            </customers>
            <sales>
                <class>adminhtml/search_order</class>
                <acl>sales</acl>
            </sales>
        </global_search>
        <translate>
            <modules>
                <(NameSpace_ModuleName)>
                    <files>
                        <default>(name_of_translation_file.csv)</default>
                    </files>
                </(NameSpace_ModuleName)>
            </modules>
        </translate>
        <layout>
            <updates>
                <(modulename)>
                    <file>(name_of_layout_file.xml)</file>
                </(modulename)>
            </updates>
        </layout>
        <(modulename)><!-- custom config variables --></(modulename)>
    </adminhtml>
Elements
Element Description
1. events
2. global_search
3. translate
4. layout
5. (modulename) 自定義變數


install


XML Structure
frontend
XML Structure
    <frontend>
        <secure_url>
            <(page_handle)>/relative/url</page_handle>
        </secure_url>
        <events>
            <(event_name)>
                <observers><!-- observers --></observers>
            </(event_name)>
        </events>
        <routers>
            <(modulename)>
                <use>[standard|admin|default]</use>
                <args>
                    <module>(NameSpace_ModuleName)</module>
                    <frontName>(frontname)</frontName>
                </args>
            </(modulename)>
        </routers>
        <translate>
            <modules>
                <(NameSpace_ModuleName)>
                    <files>
                        <default>(name_of_translation_file.csv)</default>
                    </files>
                </(NameSpace_ModuleName)>
            </modules>
        </translate>
        <layout>
            <updates>
                <(modulename)>
                    <file>(name_of_layout_file.xml)</
                </(modulename)>
            </updates>
        </layout>
    </frontend>
Elements
Element Description
1. secure_url
2. events
3. routers
4. translate
5. layout


default
XML Structure
stores
XML Structure
websites
XML Structure