Per i system.xmlfile non funziona come per i file di classe. I system.xmlfile sono raccolti dai moduli attivi di Magento. Copiarne uno nella localcartella non significa che sia in un modulo, perché il file di dichiarazione del modulo dice ancora che il modulo appartiene al corecodepool.
Se si desidera aggiungere nuovi campi a una sezione o sovrascrivere alcuni dei campi, è necessario creare il proprio modulo.
Ecco un esempio di come è possibile aggiungere un nuovo campo nella sezione Catalog->Frontende di come sovrascriverne uno nella stessa sezione.
Diciamo che il tuo modulo è chiamato Easylife_Catalog.
Sono necessari i seguenti file:
app/etc/modules/Easylife_Catalog.xml- il file di dichiarazione
<?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 - il file di configurazione
<?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- system-> file di configurazione
Supponiamo che tu voglia modificare il List Modecampo in modo che sia disponibile solo a livello globale (nessun sito Web e livello di visualizzazione dello store). Il percorso di impostazione è catalog/frontend/list_mode. Quindi system.xmlsarà simile a questo:
<?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>
Ora supponiamo che tu voglia aggiungere un nuovo campo chiamato customnella stessa sezione di configurazione. Ora l'xml sopra diventa
<?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>
Non so se esiste un metodo per rimuovere alcuni campi dalla configurazione usando questo metodo. L'ho cercato ma non ho trovato nulla.