Jak skopiować plik Code / Core system.xml do Code / local in magento


18

Chciałem trochę dostosować w panelu administracyjnym, więc wprowadziłem zmiany

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

Ale nie chcę zmieniać kodu w folderze głównym. Z powodu mojej zmiany wersji.

Chciałbym przenieść ten plik do mojego folderu lokalnego, ale nie działa

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

Czy ktoś może mi pomóc, jak zastąpić plik system.xml?

Dzięki

Odpowiedzi:


28

W przypadku system.xmlplików nie działa tak jak w przypadku plików klas. Te system.xmlpliki są pobierane z aktywnych modułów Magento. Samo skopiowanie jednego z localfolderu nie oznacza, że ​​znajduje się ono w module, ponieważ plik deklaracji modułu nadal mówi, że moduł należy do corepuli kodów.
Jeśli chcesz dodać nowe pola do sekcji lub zastąpić niektóre pola, musisz utworzyć własny moduł.
Oto przykład, jak dodać nowe pole w sekcji Catalog->Frontendi jak zastąpić je w tej samej sekcji.
Powiedzmy, że Twój moduł został wywołany Easylife_Catalog.
Potrzebne będą następujące pliki:
app/etc/modules/Easylife_Catalog.xml- plik deklaracji

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

<?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-> plik konfiguracyjny
Powiedzmy, że chcesz zmienić List Modepole, aby było dostępne tylko na poziomie globalnym (bez widoku witryny i sklepu). Ścieżka ustawień to catalog/frontend/list_mode. Wtedy system.xmlbędzie wyglądać tak:

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

Powiedzmy, że chcesz dodać nowe pole o nazwie customw tej samej sekcji konfiguracji. Teraz powyższy xml staje się

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

Nie wiem, czy istnieje metoda usunięcia jakiegoś pola z konfiguracji za pomocą tej metody. Szukałem tego, ale nic nie znalazłem.


Dzięki. Mam tylko małą notatkę, tag <depends> nie jest konieczny, ponieważ moduły lokalne są zawsze ładowane po modułach podstawowych.
Jiří Chmiel

2
@ JiříChmiel. Ehum ... nie, nie są. app/etc/modulesładowane są wszystkie pliki deklaracji modułów ( ), następnie wszystkie <depends> tagi są analizowane i ustanawiana jest hierarchia modułów. następnie moduły są ładowane w tej kolejności.
Marius

Dzięki za świetną odpowiedź. Dla mnie brakowało <zależne> w aplikacji / etc / modules / Easylife_Catalog.xml. Bez tego wydawało się, że faworyzuje podstawowy plik system.xml nad zmianami w moim lokalnym pliku system.xml do modyfikowania deklaracji.
PromInc,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.