Як скопіювати файл Code / Core system.xml у Code / local у Магенто


18

Я хотів трохи налаштувати в панелі адміністратора, тому я вніс зміни в

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

Але я не хочу змінювати код у папці core. Через зміну моєї версії.

Тому мені подобається переміщати цей файл у мою локальну папку, але він не працює

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

Може хто-небудь, будь ласка, вказував мені, як переотримати файл system.xml?

Спасибі

Відповіді:


28

Для system.xmlфайлів він не працює, як це робиться для файлів класу. Ці system.xmlфайли зібрані з активних модулів Magento. Якщо просто скопіювати його в localпапку, це не означає, що він знаходиться в модулі, оскільки файл декларації модуля все ще говорить про те, що модуль належить до coreкодової групи.
Якщо ви хочете додати нові поля до розділу або замінити деякі поля, вам потрібно створити власний модуль.
Ось приклад того, як ви можете додати нове поле до розділу Catalog->Frontendта як ви можете замінити його в тому ж розділі.
Скажімо, ваш модуль викликається Easylife_Catalog.
Вам знадобляться такі файли:
app/etc/modules/Easylife_Catalog.xml- файл декларації

<?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 - файл конфігурації

<?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- системний-> файл конфігурації
Скажімо, ви хочете змінити List Modeполе, щоб воно було доступне лише на глобальному рівні (немає веб-сайту та рівня перегляду магазину). Шлях налаштування є catalog/frontend/list_mode. Тоді system.xmlзаповіт виглядатиме так:

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

Тепер скажімо, що ви хочете додати нове поле, яке називається customв тому ж розділі конфігурації. Тепер xml стає вище

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

Я не знаю, чи є спосіб видалити якесь поле з конфігурації за допомогою цього методу. Я шукав його, але нічого не знайшов.


Спасибі. У мене є лише невелика примітка, тег <depends> не потрібен, тому що локальні модулі завжди завантажуються після основних модулів.
Jiří Chmiel

2
@ JiříChmiel. Егум ... ні вони не є. завантажуються всі файли декларування модуля ( app/etc/modules), потім <depends> аналізуються всі теги та встановлюється ієрархія модулів. потім модулі завантажуються в тому порядку.
Маріус

Дякую за чудову відповідь. Для мене <depends> у програмі / etc / module / Easylife_Catalog.xml - це те, чого мені не вистачало. Без цього здавалося, що надає перевагу файлу core.xml над змінами в моєму локальному файлі system.xml для зміни декларацій.
PromInc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.