Come copiare il file Code / Core system.xml in Code / local in magento


18

volevo un po 'di personalizzazione nel pannello di amministrazione, quindi ho apportato modifiche

   1) "app/code/core/../system.xml file its working fine. 

Ma non voglio cambiare il codice all'interno della cartella principale. A causa del mio cambio di versione.

Quindi mi piace spostare quel file nella mia cartella locale ma non funziona

 2) "app/code/local/../system.xml" files is not working

Qualcuno può guidarmi per favore come sovrascrivere il file system.xml?

Grazie

Risposte:


28

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.


Grazie. Ho solo una piccola nota, il tag <depends> non è necessario, perché i moduli locali vengono sempre caricati dopo i moduli core.
Jiří Chmiel,

2
@ JiříChmiel. Ehum ... no non lo sono. app/etc/modulesvengono caricati tutti i file di dichiarazione del modulo ( ), quindi <depends> vengono analizzati tutti i tag e viene stabilita una gerarchia di moduli. quindi i moduli vengono caricati in questo ordine.
Marius

Grazie per la magnifica risposta. Per me, <depends> nell'app / etc / modules / Easylife_Catalog.xml è quello che mi mancava. Senza questo sembrava favorire il file system.xml principale rispetto alle modifiche nel mio file system.xml locale per la modifica delle dichiarazioni.
PromInc,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.