Ваш магазин переходит на 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 | Сначала обратите внимание на тот модуль |
| Вы хотите изменить функционал модуля | Переработка |
Это признаки, а не правила. Модуль может соответствовать одному критерию переработки и при этом без проблем обновиться. Именно поэтому мы проводим тестирование перед тем, как назвать цену.
Что проверить перед принятием решения
- Сначала спросите разработчика. Проверьте страницу модуля или PrestaShop Addons: возможно, уже есть версия для PrestaShop 9.
- Перечислите, что модуль делает для вас. Какие функции вы реально используете? Переработка позволяет отбросить то, что никому не нужно.
- Проверьте зависимости. Нужен ли модулю другой модуль, функция темы или внешний сервис?
- Посмотрите на переопределения. В бэк-офисе в разделе Дополнительные параметры > Информация вы можете проверить, активны ли переопределения.
- Запланируйте это вместе с обновлением магазина. Если весь ваш магазин переходит на PrestaShop 9, протестируйте все модули вместе на копии. Прочитайте о том, как мы подходим к этому в нашей услуге обновления PrestaShop.
Что мы делаем
Когда вы загружаете модуль, мы сначала тестируем его в изолированном магазине PrestaShop 9.2 и называем цену на основе полученных результатов. Если модуль лучше переделать, мы сообщим вам об этом до оплаты. Закажите обновление вашего модуля или попросите нас проверить его.