This is an old revision of the document!
Path: app/code/(codepool)/(NameSpace)/(ModuleName)/etc/config.xml
Used to configure module. Defines all models, blocks, classes etc. for the specified module.
There is a separate config.xml file for each module. However all the files are merged together during the parsing process. This insight really helps to understand the XML structure. It is the reason that the module name is repeated as an XML element name (represented below as <(modulename)>) several times through every file - this is necessary to segregate configuration for each module. Without these elements, the configuration in these sections would be overwritten by the configuration files in other modules. For the same reason, it also means that it is really important to follow the Magento naming conventions for user-defined XML elements (such as, for example, <(modulename)_setup>).
<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>
<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>
| Element | Description |
config | Root element |
<modules>
<(NameSpace_ModuleName)>
<active>[true|false]</active>
<codePool>[core|community|local]</codePool>
<depends>
<(AnotherNameSpace_ModuleName) />
</depends>
<version>(version_number)</version>
</(NameSpace_ModuleName>
</modules>
| Element | Description |
active | Whether module is active (this value can be overridden in back-end) |
codePool | Specifies subdirectory of app/code |
depends | Specifies dependencies of this module on other modules |
module_config.xml#version | Defines version of module for use with installation / upgrades |
The elements active, codePool and depends are normally defined in the app/etc/modules/(NameSpace)_*.xml files, and the version element is normally defined in the module config.xml file.
<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)><!-- definition --></(modulename)>
</global>
<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)>
<use>[standard|admin|default]</use>
<args>
<modules>
<(NameSpace_ModuleName)
before="(AnotherNameSpace_ModuleName)"
>
(New_ClassName)
<(NameSpace_ModuleName)
</args>
</(modulename)>
</routers>
</admin>
<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>
<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>