Измените Изменения в основных файлах, чтобы они сохранялись даже после обновлений Magento
-
29-09-2020 - |
Вопрос
Недавно я внес изменения в файлы ядра Magento, но эти изменения были отменены после незначительного обновления Magento CE 1.9.2.4 с версии 1.9.2.3.Теперь я должен снова внести эти изменения.Это обязательные изменения для моего магазина, которые необходимы для отображения символа рупии (индийской валюты) в счетах Magento.Шрифт по умолчанию не поддерживает этот символ.Как я могу внести эти изменения, чтобы они оставались постоянными в основном файле?
Решение
Вы можете просто скопировать основной файл (который вы хотите переопределить) и вставить его в app/code/local/Mage
сохраняя тот же путь к этому php-файлу.Затем вы можете начать редактировать этот файл, magento будет читать ваш файл вместо основного.Ниже приведен пример :=> Если вы хотите переопределить app/code/core/Mage/Catalog/Block/Product.php
вам нужно просто необходимо это сделать Product.php
в app/code/local/Mage/Catalog/Block/Product.php
.Выполнение только этого позволит magento прочитать этот файл из локальной папки, а не из основной папки.
Причиной такого поведения при чтении из локальной папки в основную является :Этот процесс называется переопределением функциональности ядра Magento и основан на том факте, что Magento устанавливает пути включения PHP для первого поиска в app / code / local / then app/code/community/
и , наконец , в app/code/core/
.Это приводит к тому, что любые файлы с одинаковыми именами, размещенные в локальном пространстве имен или сообществе, будут иметь приоритет при загрузке, следовательно, таким образом мы можем переопределить практически любой основной файл.
Недостатки использования Вышеуказанного подхода :
Во-первых, мы должны переопределить полный файл ядра и скопировать все функции класса.Как только переопределенный файл будет установлен, этот файл всегда будет использоваться вместо файла ядра magento.Учитывая, что большинство базовых классов содержат несколько и многократно большее количество методов, это означает, что мы эффективно переопределяем все эти методы в нашем файле.
Такой подход не подходит для обновления magento по вышеуказанным причинам.
Такой подход не работает для контроллеров.
Такой подход полезен только во время тестирования / разработки вашего модуля.Вместо того чтобы писать целый модуль, вы можете быстро переопределить базовый класс и посмотреть, хорошо ли все работает.
Другие советы
Избегайте внесения изменений в файлы Magento Core, вы должны попытаться перезаписать его в сам местный пул.Таким образом, когда когда-либо обновление сделано, ваши изменения не потеряны.