Comment copier le fichier Code / Core system.xml dans Code / local dans magento


18

je voulais une personnalisation dans le panneau d'administration, j'ai donc apporté des modifications dans

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

Mais je ne veux pas changer le code dans le dossier principal. À cause de mon changement de version.

Donc j'aime déplacer ce fichier dans mon dossier local mais ça ne fonctionne pas

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

Quelqu'un peut-il me guider sur la façon de remplacer le fichier system.xml?

Merci

Réponses:


28

Pour les system.xmlfichiers, cela ne fonctionne pas comme pour les fichiers de classe. Les system.xmlfichiers sont collectés à partir des modules actifs de Magento. Le simple fait d'en copier un dans le localdossier ne signifie pas qu'il se trouve dans un module, car le fichier de déclaration de module indique toujours que le module appartient au corepool de codes.
Si vous souhaitez ajouter de nouveaux champs à une section ou remplacer certains des champs dont vous avez besoin pour créer votre propre module.
Voici un exemple de la façon dont vous pouvez ajouter un nouveau champ dans la section Catalog->Frontendet comment vous pouvez en remplacer un dans la même section.
Disons que votre module est appelé Easylife_Catalog.
Vous aurez besoin des fichiers suivants:
app/etc/modules/Easylife_Catalog.xml- le fichier de déclaration

<?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 - le fichier de configuration

<?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- système-> fichier de configuration
Supposons que vous souhaitiez modifier le List Modechamp pour qu'il soit disponible uniquement au niveau global (pas de site Web ni de vue de magasin). Le chemin de configuration est catalog/frontend/list_mode. Ensuite, system.xmlcela ressemblera à ceci:

<?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>

Supposons maintenant que vous souhaitiez ajouter un nouveau champ appelé customdans la même section de configuration. Maintenant, le xml ci-dessus devient

<?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>

Je ne sais pas s'il existe une méthode pour supprimer certains champs de la configuration à l'aide de cette méthode. Je l'ai cherché mais je n'ai rien trouvé.


Merci. Je n'ai que peu de notes, la balise <depends> n'est pas nécessaire, car les modules locaux sont toujours chargés après les modules de base.
Jiří Chmiel

2
@ JiříChmiel. Ehum ... non, ils ne le sont pas. tous les fichiers de déclaration de module ( app/etc/modules) sont chargés, puis toutes les <depends> balises sont analysées et une hiérarchie de modules est établie. puis les modules sont chargés dans cet ordre.
Marius

Merci pour la bonne réponse. Pour moi, le <depends> dans l'application / etc / modules / Easylife_Catalog.xml est ce qui me manquait. Sans cela, il semblait favoriser le fichier core system.xml par rapport aux changements dans mon fichier system.xml local pour modifier les déclarations.
PromInc
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.