Обновление или переработка: что делать со старым модулем в PrestaShop 9?

Ваш магазин переходит на PrestaShop 9, но один из модулей больше не поддерживается. Узнайте, когда достаточно обновить существующий код, а когда лучше сделать полную переработку.

Автор: Presta Support Опубликовано Проверено

Старая карточка модуля, разделяющаяся на два пути: салатовая карточка обновления со стрелкой вверх и пунктирная карточка с новыми блоками, рядом значок PrestaShop 9

Ваш магазин переходит на PrestaShop 9, но один из модулей больше не поддерживается его разработчиком. Стоит ли его обновить или пересоздать заново? Мы обновили десятки модулей, написанных для PrestaShop с версии 1.5 по 8. В этой статье вы найдете признаки, на которые мы обращаем внимание, быструю самопроверку и то, что каждый из этих путей означает для вашего магазина.

Почему старые модули ломаются в PrestaShop 9

PrestaShop 9 — это более серьезный шаг, чем большинство обновлений версий. Модуль, который отлично работал на версии 1.7 или 8, может заблокировать установку, сломать страницу или, в худшем случае, вывести из строя всю панель управления. Причины практически всегда одинаковы:

  • Более новая версия PHP. Для PrestaShop 9 требуется PHP 8.1 или новее. Код, написанный для PHP 5 или 7, сталкивается со строгими типами, удаленными функциями и предупреждениями, которые стали ошибками.
  • Более новый Symfony. PrestaShop 9 работает на Symfony 6.4 (PrestaShop 8 на Symfony 4.4). Модули, использующие службы, формы или маршруты Symfony старой версии, требуют адаптации.
  • Удаленные методы ядра и константы. Функции, которые годами считались устаревшими, такие как Tools::displayPrice() или ajaxDie(), исчезли. Модуль, который все еще вызывает их, дает сбой сразу после запуска такого кода.
  • Библиотеки, которые больше не поставляются. Старые модули иногда зависят от библиотек, которые PrestaShop раньше включал в себя сам, таких как Guzzle 5 или SwiftMailer. В PrestaShop 9 их просто нет.
  • Переопределения (overrides) измененных классов. Переопределение заменяет часть класса ядра. Когда этот класс изменяется, переопределение может сломать магазин или незаметно отменить исправление.

Узнайте больше о самих изменениях в статьях PrestaShop 9: что нового и PrestaShop 9.2.

Обновления обычно достаточно, когда

  • модуль устанавливается и работает на PrestaShop 1.7 или 8 в настоящее время;
  • проблемы заключаются в удаленных методах и константах (таких как Tools::displayPrice() или ajaxDie());
  • модуль хранит собственную логику в собственных файлах и имеет мало переопределений;
  • его шаблоны используют Smarty или Twig обычным образом, поэтому слой отображения может оставаться прежним;
  • вы довольны тем, что делает модуль, и вам нужно лишь, чтобы он продолжал работать.

Большинство этих исправлений носят механический характер: модуль продолжает делать ровно то же самое, обновляется только вызываемый им код. Модули, написанные для PrestaShop 1.5 и 1.6, часто отлично обновляются. Ваши настройки и данные остаются на месте, а модуль выглядит и работает так же, как и раньше.

Подумайте о переработке, когда

  • модуль формирует много HTML в PHP и выводит его без экранирования: обеспечение безопасности означает перенос всего слоя отображения в шаблоны;
  • он переопределяет несколько классов ядра, методы которых изменились в PrestaShop 9;
  • он зависит от другого модуля, который не обновлен (например, базовый модуль оплаты);
  • он содержит старые библиотеки, которые PrestaShop 9 больше не поставляет, такие как Guzzle 5 или SwiftMailer;
  • он очень большой и к тому же должен пройти проверку PrestaShop Validator;
  • вы все равно хотите получить новые функции, поэтому в любом случае измените большую часть кода.

Переработка — это не показатель неудачи старого модуля. Иногда код просто разрастался с годами таким образом, что чистая модернизация требует больше работы, чем начало с чистого листа.

Быстрая самопроверка

Что вы видите Указывает на
Модуль работает на PrestaShop 8 и дает сбой только на 9 Обновление
Ошибки упоминают удаленный метод или класс Обновление
У модуля нет переопределений или их немного Обновление
Страницы модуля построены как строки HTML в PHP Переработка или масштабное обновление
Несколько переопределений классов ядра Переработка или масштабное обновление
Требуется другой модуль, у которого нет версии для PrestaShop 9 Сначала обратите внимание на тот модуль
Вы хотите изменить функционал модуля Переработка

Это признаки, а не правила. Модуль может соответствовать одному критерию переработки и при этом без проблем обновиться. Именно поэтому мы проводим тестирование перед тем, как назвать цену.

Что проверить перед принятием решения

  1. Сначала спросите разработчика. Проверьте страницу модуля или PrestaShop Addons: возможно, уже есть версия для PrestaShop 9.
  2. Перечислите, что модуль делает для вас. Какие функции вы реально используете? Переработка позволяет отбросить то, что никому не нужно.
  3. Проверьте зависимости. Нужен ли модулю другой модуль, функция темы или внешний сервис?
  4. Посмотрите на переопределения. В бэк-офисе в разделе Дополнительные параметры > Информация вы можете проверить, активны ли переопределения.
  5. Запланируйте это вместе с обновлением магазина. Если весь ваш магазин переходит на PrestaShop 9, протестируйте все модули вместе на копии. Прочитайте о том, как мы подходим к этому в нашей услуге обновления PrestaShop.

Что мы делаем

Когда вы загружаете модуль, мы сначала тестируем его в изолированном магазине PrestaShop 9.2 и называем цену на основе полученных результатов. Если модуль лучше переделать, мы сообщим вам об этом до оплаты. Закажите обновление вашего модуля или попросите нас проверить его.

  • PrestaShop 9
  • Модули
  • Обновления