Su tienda pasa a PrestaShop 9, pero un módulo ya no cuenta con el mantenimiento de su desarrollador. ¿Debe actualizarlo o reconstruirlo? Hemos actualizado decenas de módulos escritos para PrestaShop desde la versión 1.5 hasta la 8. En este artículo encontrará los indicios que analizamos, una comprobación rápida y lo que implica cada opción para su tienda.
Por qué los módulos antiguos fallan en PrestaShop 9
PrestaShop 9 supone un paso más importante que la mayoría de las actualizaciones de versión. Un módulo que funcionaba perfectamente en la versión 1.7 u 8 puede detener la instalación, romper una página o, en el peor de los casos, bloquear todo el back-office. Las causas suelen ser siempre las mismas:
- Una versión de PHP más reciente. PrestaShop 9 requiere PHP 8.1 o superior. El código escrito para PHP 5 o 7 se encuentra con tipos más estrictos, funciones eliminadas y advertencias que ahora son errores.
- Un Symfony más reciente. PrestaShop 9 funciona con Symfony 6.4 (PrestaShop 8 con Symfony 4.4). Los módulos que utilizan servicios, formularios o rutas de Symfony de la versión anterior deben adaptarse.
- Métodos y constantes del núcleo eliminados. Las funciones que llevaban años obsoletas, como
Tools::displayPrice()oajaxDie(), han desaparecido. Un módulo que siga invocándolas fallará en cuanto se ejecute ese código. - Librerías que ya no se incluyen. Los módulos más antiguos a veces dependen de librerías que el propio PrestaShop solía incluir, como Guzzle 5 o SwiftMailer. En PrestaShop 9 simplemente ya no están.
- Overrides de clases modificadas. Un override reemplaza parte de una clase del núcleo. Cuando dicha clase cambia, el override puede romper la tienda o deshacer una corrección de forma silenciosa.
Obtenga más información sobre estos cambios en PrestaShop 9: novedades y PrestaShop 9.2.
Por lo general, una actualización es suficiente cuando
- el módulo se instala y funciona actualmente en PrestaShop 1.7 u 8;
- los problemas se deben a métodos y constantes eliminados (como
Tools::displayPrice()oajaxDie()); - el módulo mantiene su propia lógica en sus propios archivos y cuenta con pocos overrides;
- sus plantillas utilizan Smarty o Twig de forma estándar, por lo que la capa visual puede permanecer tal cual;
- está satisfecho con lo que hace el módulo y solo necesita que siga funcionando.
La mayoría de estas correcciones son mecánicas: el módulo sigue haciendo exactamente lo mismo, solo se actualiza el código que invoca. Los módulos escritos para PrestaShop 1.5 y 1.6 a menudo se actualizan sin problemas. Sus configuraciones y datos permanecen en su lugar, y el aspecto y funcionamiento del módulo no varían.
Considere la reconstrucción cuando
- el módulo genera una gran cantidad de HTML en PHP y lo imprime sin escapar: asegurar esto implica trasladar toda la capa visual a las plantillas;
- sobrescribe varias clases del núcleo cuyos métodos han cambiado en PrestaShop 9;
- depende de otro módulo que no ha sido actualizado (por ejemplo, un módulo de pago base);
- incluye librerías antiguas que PrestaShop 9 ya no incorpora, como Guzzle 5 o SwiftMailer;
- es muy extenso y además debe superar el PrestaShop Validator;
- de todos modos desea nuevas funcionalidades y modificaría gran parte del código independientemente de lo anterior.
Reconstruir un módulo no es un fracaso del módulo antiguo. A veces, el código simplemente ha crecido con los años de tal forma que una actualización limpia requiere más trabajo que empezar desde un diseño claro.
Autocomprobación rápida
| Lo que observa | Indica |
|---|---|
| El módulo funciona en PrestaShop 8 y solo falla en la 9 | Actualización |
| Los errores mencionan un método o clase eliminados | Actualización |
| El módulo no tiene overrides o tiene muy pocos | Actualización |
| Las páginas del módulo se generan como cadenas HTML en PHP | Reconstrucción o actualización mayor |
| Varios overrides de clases del núcleo | Reconstrucción o actualización mayor |
| Necesita otro módulo que carece de versión para PrestaShop 9 | Revisar ese módulo primero |
| Desea cambiar el comportamiento del módulo | Reconstrucción |
Estos son indicios, no reglas estrictas. Un módulo puede cumplir un criterio de reconstrucción y aun así ser actualizado sin inconvenientes. Por ello, realizamos pruebas antes de ofrecer un presupuesto.
Qué comprobar antes de decidir
- Consulte primero al desarrollador. Revise la página del módulo o PrestaShop Addons: es posible que ya exista una versión para PrestaShop 9.
- Haga una lista de lo que el módulo hace por usted. ¿Qué funciones utiliza realmente? Una reconstrucción permite prescindir de lo que nadie necesita.
- Compruebe las dependencias. ¿El módulo necesita otro módulo, una función de la plantilla o un servicio externo?
- Revise los overrides. En el back-office, en Parámetros avanzados > Información, puede comprobar si hay overrides activos.
- Planifíquelo junto con la actualización de la tienda. Si toda su tienda migra a PrestaShop 9, pruebe todos los módulos conjuntamente en una copia. Descubra cómo abordamos este proceso en nuestro servicio de actualización de PrestaShop.
Qué hacemos nosotros
Cuando nos envía un módulo, primero lo probamos en un entorno aislado de PrestaShop 9.2 y le ofrecemos un presupuesto basado en nuestros hallazgos. Si a un módulo le conviene más ser reconstruido, se lo notificaremos antes de que realice el pago. Haga actualizar su módulo o pídanos que lo revisemos.