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