Простой способ переопределения 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
классов содержат большое количество методов, это означает, что мы переопределим все эти методы в нашем файле. Это неэффективно, если нам нужно переопределить, например, один или два метода. - Этот подход может негативно влиять на последующие обновления системы (по вышеуказанной причине).
- Этот подход не работает для переопределения контроллеров.
Этот способ полезен только при тестировании/разработке вашего модуля. Вместо написания всего модуля вы можете быстро переопределить основной класс, что иногда бывает очень полезным.