Magento 的 config.xml 配置引數詳解
阿新 • • 發佈:2019-02-07
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
當你在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