Para os system.xml
arquivos, não funciona como nos arquivos de classe. Os system.xml
arquivos são coletados dos módulos ativos do Magento. Apenas copiar um na local
pasta não significa que ele esteja em um módulo, porque o arquivo de declaração do módulo ainda diz que o módulo pertence ao conjunto de core
códigos.
Se você deseja adicionar novos campos a uma seção ou substituir alguns dos campos, precisa criar seu próprio módulo.
Aqui está um exemplo de como você pode adicionar um novo campo na seção Catalog->Frontend
e como substituir um na mesma seção.
Digamos que seu módulo seja chamado Easylife_Catalog
.
Você precisará dos seguintes arquivos:
app/etc/modules/Easylife_Catalog.xml
- o arquivo de declaração
<?xml version="1.0"?>
<config>
<modules>
<Easylife_Catalog>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Catalog />
</depends>
</Easylife_Catalog>
</modules>
</config>
app/code/local/Easylife/Catalog/etc/config.xml
- o arquivo de configuração
<?xml version="1.0"?>
<config>
<modules>
<Easylife_Catalog>
<version>0.0.1</version>
</Easylife_Catalog>
</modules>
</config>
app/etc/local/Easylife/Catalog/etc/system.xml
- sistema-> arquivo de configuração
Digamos que você queira alterar o List Mode
campo para estar disponível apenas em nível global (sem nível de exibição de site e loja). O caminho cenário é catalog/frontend/list_mode
. Então, a system.xml
aparência será assim:
<?xml version="1.0"?>
<config>
<sections>
<catalog><!-- first part of the path -->
<groups>
<frontend><!-- second part of the path -->
<fields>
<list_mode><!-- third part of the path -->
<show_in_website>0</show_in_website><!-- this will override the core value -->
<show_in_store>0</show_in_store><!-- this will override the core value -->
</list_mode>
</fields>
</frontend>
</groups>
</catalog>
</sections>
</config>
Agora, digamos que você queira adicionar um novo campo chamado custom
na mesma seção de configuração. Agora o xml acima se torna
<?xml version="1.0"?>
<config>
<sections>
<catalog><!-- first part of the path -->
<groups>
<frontend><!-- second part of the path -->
<fields>
<list_mode><!-- third part of the path -->
<show_in_website>0</show_in_website><!-- this will override the core value -->
<show_in_store>0</show_in_store><!-- this will override the core value -->
</list_mode>
<custom translate="label"><!-- your new field -->
<label>Custom</label>
<frontend_type>text</frontend_type>
<sort_order>1000</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</custom>
</fields>
</frontend>
</groups>
</catalog>
</sections>
</config>
Não sei se existe um método para remover algum campo da configuração usando esse método. Eu procurei, mas não encontrei nada.
app/etc/modules
) são carregados, todas as<depends>
tags são analisadas e uma hierarquia de módulos é estabelecida. então os módulos são carregados nessa ordem.