Измените Изменения в основных файлах, чтобы они сохранялись даже после обновлений Magento

magento.stackexchange https://magento.stackexchange.com/questions/106106

Вопрос

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

Недостатки использования Вышеуказанного подхода :

  1. Во-первых, мы должны переопределить полный файл ядра и скопировать все функции класса.Как только переопределенный файл будет установлен, этот файл всегда будет использоваться вместо файла ядра magento.Учитывая, что большинство базовых классов содержат несколько и многократно большее количество методов, это означает, что мы эффективно переопределяем все эти методы в нашем файле.

  2. Такой подход не подходит для обновления magento по вышеуказанным причинам.

  3. Такой подход не работает для контроллеров.

Такой подход полезен только во время тестирования / разработки вашего модуля.Вместо того чтобы писать целый модуль, вы можете быстро переопределить базовый класс и посмотреть, хорошо ли все работает.

Другие советы

Избегайте внесения изменений в файлы Magento Core, вы должны попытаться перезаписать его в сам местный пул.Таким образом, когда когда-либо обновление сделано, ваши изменения не потеряны.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top