Per i system.xml
file non funziona come per i file di classe. I system.xml
file sono raccolti dai moduli attivi di Magento. Copiarne uno nella local
cartella non significa che sia in un modulo, perché il file di dichiarazione del modulo dice ancora che il modulo appartiene al core
codepool.
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->Frontend
e 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 Mode
campo 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.xml
sarà 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 custom
nella 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.