Blog

Checklist para actualizar PrestaShop 1.7 a 9: 12 pasos antes de pulsar "Actualizar"

Equipo de PrestaShopAddons 82 min read




Actualizar una tienda de PrestaShop 1.7 a 9 no se hace con un clic. Entre esas versiones, PrestaShop ha subido la versión mínima de PHP, ha eliminado cientos de clases del núcleo, ha sustituido el tema por defecto y ha cambiado la forma en que se construye el back office. La actualización en sí suele ir bien. Lo que falla es todo lo que la rodea: un módulo de pago que llama a un método que ya no existe, un override que deja de funcionar sin avisar o una plantilla del tema que espera variables que PrestaShop 9 ya no envía.

Este checklist sigue el orden en el que trabajamos cuando preparamos una tienda para PrestaShop 9. Casi todo se hace antes de empezar la actualización, sobre una copia de la tienda, para que tus clientes no noten nada.

Antes de empezar: apunta tres cosas

Abre el back office y ve a Advanced Parameters → Information. Anota:

  1. Tu versión de PrestaShop, por ejemplo 1.7.8.11 u 8.1.7.
  2. Tu versión de PHP, que aparece en la misma página, en la información del servidor.
  3. Cuántos módulos no son de PrestaShop. En Modules → Module Manager, fíjate en los que instalaste tú o compraste. Son esos módulos los que determinan lo difícil que será la actualización.

Una tienda en 1.7.8 con PHP 7.4 y veinte módulos de terceros es un proyecto. Una tienda en 8.2 con PHP 8.1 y cinco módulos bien mantenidos es cosa de una tarde.

El checklist en 12 pasos

1. Haz una copia de seguridad completa y una copia de pruebas (staging)

Haz copia de seguridad de los archivos y de la base de datos, y comprueba que de verdad puedes restaurarlas. Después crea una copia de pruebas (staging) de la tienda en un servidor del mismo tipo, idealmente en un subdominio protegido con contraseña. Todos los pasos siguientes se hacen primero en esa copia. La tienda en producción solo se toca al final.

2. Revisa el servidor: PHP 8.1 o superior

PrestaShop 9 requiere PHP 8.1 o superior (9.0 admite de PHP 8.1 a 8.4 y 9.1 añade 8.5; consulta los requisitos oficiales del sistema). Es el obstáculo más habitual en las tiendas 1.7, porque PrestaShop 1.7 no funciona en absoluto con PHP 8. Pregunta a tu hosting qué versiones de PHP ofrece y si puedes cambiar la versión por sitio. Revisa también memory_limit (la documentación oficial recomienda al menos 512M), max_execution_time y que las extensiones intl, zip, gd y mbstring estén activadas.

3. Planifica la ruta: 1.7 → 8 → 9

No se puede actualizar directamente de 1.7 a 9: el Update Assistant oficial lleva primero las tiendas 1.7 a PrestaShop 8. El requisito de PHP marca el resto de la ruta. PrestaShop 1.7.8 funciona con PHP hasta 7.4, PrestaShop 8 con PHP de 7.2.5 a 8.1 y PrestaShop 9 parte de PHP 8.1. Así que, para una tienda 1.7, el camino seguro habitual es:

  1. Actualizar de 1.7.8 a 8.2 sin salir todavía de PHP 7.4.
  2. Cambiar el servidor a PHP 8.1, compatible con PrestaShop 8 y 9, y probar.
  3. Actualizar de 8.2 a 9.

En cada paso cambias una sola cosa, así que si algo falla sabes qué lo ha provocado. Una tienda que ya está en PrestaShop 8 puede pasar directamente a 9.

4. Haz una lista de todos los módulos de terceros y consulta a cada proveedor

Para cada módulo que no venga con PrestaShop, apunta la versión y comprueba si el autor ha publicado una versión para PrestaShop 9. Los módulos comprados en PrestaShop Addons indican las versiones compatibles en su ficha de producto. Si un módulo lleva años sin actualizarse, cuenta con una de estas tres salidas: sustituirlo, encargar que lo arreglen o eliminarlo. Los módulos que no usas son la victoria más fácil: desinstálalos antes de la actualización y no podrán romper nada.

5. Analiza tus módulos en busca de código que PrestaShop ha eliminado

Entre 1.7.8 y 9.0, PrestaShop eliminó 444 clases del núcleo, unos 1800 métodos, 23 constantes y 16 hooks. Un módulo que use cualquiera de ellos o bien lanzará un error fatal, o bien dejará de hacer parte de su trabajo sin decir nada.

No tienes que buscarlos a mano. Hemos publicado un script gratuito y de código abierto que analiza un módulo y enumera todas las clases, métodos y hooks eliminados que utiliza, con el archivo y la línea, y propone el sustituto para los casos más comunes. Lo explicamos en un comprobador gratuito de compatibilidad de módulos con PrestaShop 9. Para revisar todos los módulos de una tienda de una vez:

for m in /var/www/shop/modules/*/; do php ps9check.php "$m"; done

Un resultado típico tiene este aspecto:

ERROR    yourmodule.php:176
         Tools::displayPrice() was removed in PrestaShop 9.0.
         → Use $this->context->getCurrentLocale()->formatPrice($price, $this->context->currency->iso_code).

Un informe corto suele significar correcciones de una línea. Uno largo significa que el módulo necesita trabajo de verdad, y es mejor saberlo ahora que después de la actualización.

6. Revisa el rango de compatibilidad que declara cada módulo

Cada módulo declara en ps_versions_compliancy qué versiones de PrestaShop admite. Si el máximo es inferior a 9.0, por ejemplo 'max' => '8.99.99', PrestaShop 9 se niega a instalarlo. El escáner también lo detecta. Sube ese valor solo cuando el módulo se haya probado de verdad en PrestaShop 9; si no, simplemente estás escondiendo el problema.

7. Localiza tus overrides

Los overrides son archivos de la carpeta /override que sustituyen partes del núcleo de PrestaShop. Eran habituales en la época de 1.6 y 1.7. Cuando PrestaShop elimina o renombra el método que sustituye un override, este simplemente deja de ejecutarse, sin ningún mensaje de error. La funcionalidad que añadía, sencillamente, desaparece.

Haz una lista de todo lo que hay en /override/classes y /override/controllers, averigua qué módulo o desarrollador añadió cada archivo y comprueba si el método sobrescrito sigue existiendo en PrestaShop 9. Una prueba rápida: en Advanced Parameters → Performance puedes desactivar todos los overrides en la copia de pruebas y ver qué cambia.

8. Planifica qué hacer con el tema

PrestaShop 9 trae un nuevo tema por defecto, Hummingbird. La actualización no cambia tu tema automáticamente, así que una tienda con Classic o con un tema comprado lo conserva. Es una buena noticia, pero tiene dos consecuencias:

  • Un tema comprado necesita su propia versión para PrestaShop 9, publicada por el autor del tema, exactamente igual que un módulo.
  • Los módulos que funcionan con Classic pueden comportarse de otra manera en Hummingbird, y al revés. Hummingbird usa capas de cascada CSS (cascade layers) y su propio modal de carrito, lo que rompió varias partes de nuestro propio módulo de carrito hasta que lo corregimos. Tienes los detalles en nuestro caso práctico de actualización de un módulo a PrestaShop 9.

Si piensas pasarte a Hummingbird más adelante, prueba ahora en él los módulos importantes, ya que de todos modos estás haciendo pruebas.

9. Empieza por los módulos de pago y de envío

No todos los módulos rotos cuestan lo mismo. Un módulo de blog que falla es una molestia. Un módulo de pago o de envío que falla significa cero pedidos. Pruébalos primero y con más cuidado, y confirma con el proveedor de pagos que su módulo es oficialmente compatible con PrestaShop 9. Los módulos de pago son, además, los que con más probabilidad se escribieron para 1.7 y nadie ha vuelto a tocar.

10. Lanza la actualización en la copia de pruebas

Usa el módulo oficial de PrestaShop Update Assistant (antes 1-Click Upgrade; consulta la guía oficial de actualización). Activa el modo de depuración en la copia de pruebas antes de empezar (Advanced Parameters → Performance → Debug mode), para ver los errores reales en lugar de una página en blanco. Anota cada error y cada aviso (notice). Un aviso que parece inofensivo en modo de depuración puede ser el síntoma de un módulo que funciona a medias.

11. Prueba el circuito del dinero de principio a fin

Después de la actualización, haz pedidos de prueba reales en la copia de pruebas:

  1. Navega por una categoría y por una ficha de producto.
  2. Añade al carrito, cambia la cantidad, elimina un producto.
  3. Aplica un cupón de descuento.
  4. Completa el proceso de compra como invitado y como cliente registrado.
  5. Paga con cada uno de los métodos de pago que ofreces (en modo de prueba).
  6. Revisa el email de confirmación del pedido y el pedido en el back office.

Hazlo en ordenador y en el móvil. Los problemas del carrito y del proceso de compra suelen aparecer solo en móvil, por ejemplo un botón fijo que acaba en el sitio equivocado. Si tu tienda usa un carrito deslizante o emergente, pruébalo expresamente: el carrito es la parte de la tienda más ligada al tema. Nuestro Block Sliding Cart es un ejemplo de módulo de carrito que ya funciona en PrestaShop 1.7, 8 y 9, tanto con Classic como con Hummingbird.

12. Planifica el paso a producción y la vuelta atrás

Cuando la copia de pruebas funcione, repite la actualización en la tienda en producción en un momento tranquilo, con el modo mantenimiento activado. Decide de antemano qué significa “ha salido mal” y cómo harás el rollback: restaurar la copia de seguridad del paso 1 debe llevar minutos, no horas. Tras el paso a producción, vigila durante unos días el registro de errores y el número de pedidos.

Lo que suele fallar

Cuando actualizamos nuestro propio módulo, la parte de PHP necesitó menos cambios de lo esperado. Los problemas que más tiempo nos costaron fueron:

  • Métodos del núcleo eliminados, como Tools::displayPrice(), que se convirtieron en errores fatales en siete puntos.
  • Clases que pasaron a un nuevo namespace, como los presenters del carrito y del producto.
  • El nuevo tema: una lista del carrito que se convirtió en una cuadrícula de dos columnas por culpa de las capas CSS, y una función del tema que lanzaba un error al recibir el HTML propio del módulo.
  • Avisos del modo de depuración que parecían inofensivos, pero que hacían fallar páginas con comprobaciones más estrictas.

La historia completa, con las correcciones de código, está en Actualizar un módulo de PrestaShop a PrestaShop 9: qué falló y cómo lo solucionamos.

El checklist, en resumen

# Paso Hecho
1 Copia de seguridad completa (archivos + base de datos), restauración probada, copia de pruebas creada ☐
2 El hosting ofrece PHP 8.1+; memoria y extensiones revisadas ☐
3 Ruta de actualización elegida (1.7 → 8.2 → PHP 8.1 → 9, u 8 → 9) ☐
4 Módulos de terceros listados; los que no se usan, eliminados ☐
5 Todos los módulos analizados en busca de código eliminado ☐
6 ps_versions_compliancy revisado ☐
7 Overrides listados y revisados ☐
8 El tema tiene versión para PrestaShop 9; módulos clave probados en Hummingbird ☐
9 Módulos de pago y envío confirmados para PrestaShop 9 ☐
10 Actualización lanzada en la copia de pruebas con el modo de depuración activado ☐
11 Pedidos de prueba hechos en ordenador y en móvil ☐
12 Ventana de paso a producción y plan de rollback acordados ☐

Preguntas frecuentes

¿Puedo actualizar directamente de PrestaShop 1.7 a 9?

No. El Update Assistant oficial actualiza primero las tiendas 1.7 a PrestaShop 8; además, PrestaShop 1.7 no funciona con PHP 8 y PrestaShop 9 necesita PHP 8.1 o superior. La ruta segura es pasar de 1.7.8 a 8.2 con tu PHP actual, después cambiar a PHP 8.1 y, por último, actualizar a 9.

¿Funcionarán mis módulos en PrestaShop 9?

Los que su autor haya actualizado para PrestaShop 9, sí. Los módulos antiguos solo funcionan si no usan nada del código que PrestaShop ha eliminado. Nuestro comprobador de compatibilidad gratuito enumera ese código para cada módulo, así que lo sabrás antes de actualizar.

¿Qué versión de PHP necesita PrestaShop 9?

PHP 8.1 o superior. Comprueba qué versiones admite tu hosting antes de planificar nada más.

¿Tengo que cambiar al tema Hummingbird?

No. La actualización mantiene tu tema actual. Un tema comprado necesita una versión para PrestaShop 9 publicada por su autor, y conviene probar los módulos importantes en Hummingbird si piensas cambiar más adelante.

¿Cuánto tiempo lleva actualizar a PrestaShop 9?

La actualización en sí lleva de unos minutos a una hora. La preparación lleva más: desde una tarde para una tienda PrestaShop 8 con pocos módulos bien mantenidos hasta varios días para una tienda 1.7 con muchos módulos antiguos y overrides.

Si el análisis devuelve una lista larga

Algunas tiendas completan esta lista en un día. Otras descubren que la mitad de sus módulos necesitan cambios. Si prefieres delegar esa parte, ese es nuestro trabajo: corrección de módulos para PrestaShop 9. Encontramos la causa, la corregimos en una copia de tu tienda y solo entonces la desplegamos. Envíanos el informe del escáner y te responderemos con preguntas o un presupuesto.