Для 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>
Я не знаю, чи є спосіб видалити якесь поле з конфігурації за допомогою цього методу. Я шукав його, але нічого не знайшов.