Простий спосіб перевизначення core файлів Magento
У фреймворку Мадженто є кілька методів, які дозволяють перевизначати core файли. У сьогоднішньому пості я розповім про один з найпростіших таких методів.
Суть даного методу полягає в тому, що вам не потрібно створювати власний модуль і писати зміни лейаута в файлі config.xml. Замість цього ви можете просто скопіювати основний файл двигуна (який потрібно перевизначити) в локальне середовище: app/code/local/Mage, зі збереженням повного шляху цього php файлу. Після цього ви можете відредагувати файл в локальному середовищі під свої потреби, а Magento буде використовувати ваш файл замість core файлу.
Приклад:
Наприклад, якщо вам потрібно перевизначити файл:
app/code/core/Mage/Catalog/Block/Category/View.php
просто скопіюйте файл View.php в:
app/code/local/Mage/Catalog/Block/Category/View.php
Перевизначення спрацює, оскільки Magento підключає PHP-файли в такому порядку: спочатку з середовища app/code/local/, потім app/code/community/ і, нарешті, з app/code/core/. Це призводить до того, що файли, які мають одну і ту ж назву з середовища local або community, матимуть пріоритет при завантаженні. Таким чином ми можемо перевизначити майже будь-який файл ядра.
Недоліки використання даного підходу:
- У цьому способі перевизначається весь файл ядра, разом з усіма його функціями. З огляду на те, що більшість
coreкласів містять велику кількість методів, це означає, що ми перевизначимо всі ці методи в нашому файлі. Це неефективно, якщо нам потрібно перевизначити, наприклад, один або два методи. - Цей підхід може негативно впливати на подальші оновлення системи (по вищевказаній причині).
- Цей підхід не працює для перевизначення контролерів.
Цей спосіб корисний тільки при тестуванні/розробці вашого модуля. Замість написання всього модуля ви можете швидко перевизначити основний клас, що іноді буває дуже корисним.