Migración de PrestaShop 1.6 a 8: guía paso a paso y mejores prácticas
La migración de una tienda PrestaShop de la versión 1.6 a la 8 no es un simple parche; es una reconstrucción profunda que implica cambios en el núcleo, el motor de plantillas y la estructura de la base de datos. Si estás leyendo esto, probablemente ya sabes que el soporte oficial de PrestaShop 1.6 finalizó en 2021, y que mantener una tienda desactualizada es un riesgo de seguridad y rendimiento. Sin embargo, el salto de versiones es tan grande (de PHP 5.6 a PHP 8.1, de Smarty 2 a Twig, de Bootstrap 2 a 3) que un simple clic en "actualizar" no funcionará.
Esta guía está diseñada para administradores de sistemas y desarrolladores que necesitan un plan de acción realista. No vamos a venderte humo: la migración de PrestaShop 1.6 a 8 es un proceso manual, meticuloso y que requiere pruebas exhaustivas. Pero con un enfoque estructurado, puedes lograrlo sin perder datos ni clientes.
¿Por qué migrar de PrestaShop 1.6 a 8?
Antes de lanzarte al proceso técnico, es clave entender qué ganas con el cambio. PrestaShop 8 no es una versión "mejorada" de la 1.6; es un ecosistema completamente renovado.
Ventajas clave de PrestaShop 8
- Rendimiento nativo: El nuevo núcleo basado en Symfony 4 y PHP 8.1 ofrece tiempos de carga hasta un 40% más rápidos sin módulos de caché adicionales.
- Seguridad actualizada: Soporte de PHP 8.1, que recibe parches de seguridad activos. En PrestaShop 1.6, cualquier vulnerabilidad descubierta hoy no será corregida por el equipo oficial.
- Motor de plantillas Twig: Adiós a Smarty. Twig es más rápido, más seguro y permite un desarrollo de temas más limpio y modular.
- API REST nativa: Puedes integrar tu tienda con ERPs, CRMs o sistemas de logística sin módulos de terceros.
- Compatibilidad con tecnologías modernas: PWA, WebP, HTTP/2, lazy loading nativo.
[INFO] Aunque PrestaShop 8.1 ya está disponible, muchas agencias recomiendan migrar directamente a la 8.0.x estable, ya que la migración a 8.1 sigue la misma ruta de actualización menor.
Preparación del entorno: requisitos previos
No conectes tu tienda en producción a la nueva versión sin un entorno de pruebas. La migración de PrestaShop 1.6 a 8 requiere un servidor limpio o un subdominio de staging.
Requisitos técnicos mínimos para PrestaShop 8
- PHP: 7.4 o superior (recomendado 8.1).
- Base de datos: MySQL 5.7+ o MariaDB 10.2+.
- Servidor web: Apache con mod_rewrite o Nginx.
- Memoria: 256 MB de límite de memoria PHP (recomendado 512 MB).
- Extensiones PHP:
gd,curl,json,mbstring,openssl,pdo_mysql,xml,zip.
Herramientas necesarias
- Cliente FTP o SSH (scp, rsync).
- phpMyAdmin o acceso a la línea de comandos MySQL.
- Git (opcional, pero recomendado para control de versiones).
- Entorno local (XAMPP, MAMP, Docker) o un servidor de staging.
[WARNING] No ejecutes el proceso de migración directamente en tu servidor de producción. Siempre usa un clon exacto de tu tienda.
Paso 1: Auditoría completa de la tienda 1.6
Antes de tocar un solo archivo, debes saber exactamente qué tienes. Una auditoría evita sorpresas desagradables durante la migración de PrestaShop.
Inventario de módulos y temas
La compatibilidad de módulos es el talón de Aquiles de esta migración. PrestaShop 1.6 usaba hooks y controladores propietarios que no existen en la versión 8.
- Módulos nativos: Los módulos oficiales de PrestaShop (como "Bloques", "Navegación por facetas" o "Productos destacados") han sido reemplazados o rediseñados. La mayoría no son compatibles.
- Módulos de terceros: Contacta con los desarrolladores de cada módulo. Si no tienen versión para PrestaShop 8, tendrás que buscar alternativas o contratar una adaptación.
- Tema (theme): El tema de PrestaShop 1.6 está basado en Smarty 2 y Bootstrap 2. No funcionará en PrestaShop 8. Necesitarás un tema nuevo para PrestaShop 8 (basado en Twig y Bootstrap 3/4) o contratar a un desarrollador para que migre tu diseño.
Revisión de la base de datos
La estructura de la base de datos cambia significativamente. Ejecuta estas consultas en tu clon:
-- Verificar tablas con prefijo personalizado (por defecto ps_)
SHOW TABLES LIKE 'ps_%';
-- Contar productos, categorías, pedidos
SELECT COUNT(*) FROM ps_product;
SELECT COUNT(*) FROM ps_orders;
También revisa si usas campos personalizados (por ejemplo, módulos de fabricación, atributos extra, etc.). Estos pueden perderse si el módulo no se migra correctamente.
Paso 2: Creación de un entorno de staging
Necesitas un clon exacto de tu tienda en un entorno aislado. No hagas la migración de PrestaShop 1.6 a 8 en producción.
Clonar la tienda
- Copia los archivos: Usa
rsyncoscppara copiar todo el directorio de la tienda al servidor de staging.rsync -avz --exclude='.git' usuario@produccion:/ruta/tienda/ /ruta/staging/ - Copia la base de datos:
mysqldump -u usuario -p basededatos > backup_produccion.sql mysql -u usuario -p basededatos_staging < backup_produccion.sql - Configura el entorno: Edita el archivo
app/config/parameters.php(en PrestaShop 1.6) oconfig/settings.inc.phppara apuntar a la base de datos de staging y la nueva URL.
[TIP] Si usas Docker, puedes crear un contenedor con PHP 8.1 y MySQL 8 para simular el entorno final de PrestaShop 8.
Paso 3: Proceso de migración automática (herramienta 1-Click Upgrade)
PrestaShop 8 incluye un módulo nativo llamado 1-Click Upgrade (versión 5.0+). Sin embargo, este módulo no puede migrar directamente de 1.6 a 8. Necesitas un proceso escalonado.
Ruta de actualización recomendada
- Actualiza tu PrestaShop 1.6 a la última versión 1.6.x (1.6.1.24). Esto asegura que la base de datos esté en el estado más limpio posible.
- Migra de 1.6 a 1.7 usando el módulo 1-Click Upgrade. Esto es posible porque el módulo soporta el salto de 1.6 a 1.7.8 (la última de la rama 1.7).
- Migra de 1.7.8 a 8.0 usando el mismo módulo (ya actualizado para la rama 8).
Pasos concretos
- Paso 2.1: En tu staging, ve al back office de PrestaShop 1.6. Ve a Módulos y servicios → Módulos y servicios → busca "1-Click Upgrade". Instálalo y configúralo.
- Paso 2.2: Selecciona la opción "Actualizar a PrestaShop 1.7.8.12" (la última versión 1.7). Esto descargará los archivos y ejecutará el proceso.
- Paso 2.3: Una vez completado (puede tardar horas), repite el proceso seleccionando "Actualizar a PrestaShop 8.0.4".
[WARNING] Este proceso puede fallar si tu tienda tiene muchos módulos no compatibles o personalizaciones en el núcleo. Si falla, tendrás que hacer una migración manual (ver Paso 4).
Paso 4: Migración manual (cuando la automática falla)
Si el módulo 1-Click Upgrade se bloquea, no te preocupes. La migración manual de PrestaShop 1.6 a 8 es posible, aunque más laboriosa.
Exportar datos críticos
No puedes migrar toda la base de datos directamente. Debes extraer solo los datos esenciales y luego importarlos en una instalación limpia de PrestaShop 8.
Datos a exportar:
- Productos (incluyendo combinaciones, imágenes, precios).
- Clientes y direcciones.
- Pedidos y facturas.
- Categorías.
- CMS (páginas de contenido).
- Módulos personalizados (solo los datos, no el código).
Herramientas recomendadas:
- CSV import/export: PrestaShop 1.6 tiene un exportador nativo en Avanzado → Exportar. Úsalo para productos, categorías y clientes.
- Módulos de migración: Herramientas como PrestaShop Migration Pro o Cart2Cart pueden automatizar la transferencia de datos entre versiones.
- Consultas SQL personalizadas: Para datos muy específicos (por ejemplo, precios especiales, descuentos), escribe consultas que extraigan las tablas relevantes.
Instalación limpia de PrestaShop 8
- Descarga la última versión de PrestaShop 8 desde prestashop.com.
- Instala en tu servidor de staging como una tienda nueva.
- Configura el idioma, la moneda y los ajustes básicos.
Importación de datos
- Productos: Usa el importador CSV de PrestaShop 8 (Catálogo → Productos → Importar). Asegúrate de mapear correctamente los campos (nombre, descripción, precio, imágenes).
- Clientes: Importa desde CSV, pero ten en cuenta que las contraseñas no se migrarán (deberás pedir a los clientes que restablezcan su contraseña).
- Pedidos: Los pedidos antiguos son difíciles de migrar manualmente. Una opción es mantener la tienda 1.6 como archivo de solo lectura para consultas históricas, o contratar a un desarrollador para que escriba un script de migración de pedidos.
[INFO] La migración manual no conserva las URL antiguas. Deberás configurar redirecciones 301 desde las URL de PrestaShop 1.6 a las nuevas (por ejemplo, de
/producto.htmla/producto-nuevo.html).
Paso 5: Compatibilidad de módulos y temas
Este paso es el más tedioso. La compatibilidad de módulos en PrestaShop 8 es drásticamente diferente.
Cómo verificar la compatibilidad
- Lista blanca de módulos: En el back office de PrestaShop 8, ve a Módulos → Catálogo de módulos. Los módulos nativos ya están actualizados.
- Módulos de pago: Contacta con el desarrollador. Pregunta si tienen versión para PrestaShop 8. Si no, busca alternativas en el marketplace.
- Tema: No intentes usar tu tema de 1.6. Contrata a un desarrollador para que cree un tema basado en Twig que se parezca visualmente, o compra un tema compatible con PrestaShop 8.
Migración de personalizaciones
Si tu tienda 1.6 tenía código personalizado en controladores, hooks o clases override, ese código no funcionará en PrestaShop 8. Necesitarás reescribirlo usando Symfony y el nuevo sistema de hooks.
[TIP] Si tienes muchos módulos personalizados, considera dividir la migración en fases: primero migra los datos y los módulos esenciales (pago, envío, impuestos), y luego añade los módulos secundarios.
Paso 6: Pruebas exhaustivas
Antes de lanzar la tienda migrada, debes probar absolutamente todo. Una migración de PrestaShop 1.6 a 8 mal probada puede arruinar tu negocio.
Lista de verificación de pruebas
- Catálogo: ¿Todos los productos se ven correctamente? ¿Las imágenes cargan? ¿Las combinaciones (tallas, colores) funcionan?
- Proceso de compra: ¿El carrito añade productos? ¿El checkout funciona (dirección, transporte, pago)? ¿Los emails de confirmación se envían?
- Clientes: ¿Pueden iniciar sesión? ¿Pueden ver su historial de pedidos?
- Módulos: ¿El módulo de pago procesa transacciones? ¿El módulo de envío calcula tarifas? ¿El módulo de SEO genera URLs limpias?
- Rendimiento: Usa herramientas como GTmetrix o Lighthouse para medir tiempos de carga. PrestaShop 8 debería ser más rápido, pero un tema mal optimizado puede arruinarlo.
Pruebas de integración
Si usas un ERP, CRM o sistema de logística, verifica que la API REST de PrestaShop 8 se comunique correctamente. La API ha cambiado respecto a la 1.6.
Paso 7: Puesta en producción y post-migración
Una vez que todo funciona en staging, es hora de lanzar.
Plan de lanzamiento
- Pon tu tienda 1.6 en modo mantenimiento (en el back office, Preferencias → Mantenimiento).
- Copia la base de datos de staging a producción (asegúrate de que no haya pedidos nuevos desde que clonaste).
- Copia los archivos (usa rsync para sincronizar el directorio de staging con producción).
- Actualiza la configuración (URL, base de datos, claves de API).
- Desactiva el modo mantenimiento y verifica que todo funcione.
Tareas post-migración
- Redirecciones 301: Configura las redirecciones de las URL antiguas a las nuevas. Puedes usar un módulo como PrestaShop URL Redirects o hacerlo manualmente en
.htaccess. - SEO: Envía el nuevo sitemap a Google Search Console. Revisa que los meta tags y las descripciones se hayan migrado correctamente.
- Monitorización: Durante las primeras 48 horas, monitoriza los logs del servidor y los informes de errores de PrestaShop. Busca mensajes como "Class not found" o "Table not exists".
[WARNING] No borres la base de datos de la tienda 1.6 hasta que hayas confirmado que la migración de PrestaShop 1.6 a 8 es estable (al menos 1 mes). Guarda una copia de seguridad en frío.
Mejores prácticas para una migración exitosa
Gestión de la base de datos PrestaShop
- Limpieza previa: Antes de migrar, elimina productos inactivos, pedidos cancelados y clientes no registrados. Una base de datos más pequeña migra más rápido.
- Índices: Después de la migración, optimiza las tablas de la base de datos. Ejecuta
OPTIMIZE TABLEen todas las tablas para reconstruir índices. - Prefijos de tabla: Si tu base de datos usa un prefijo personalizado (ej.
tienda_), asegúrate de que el importador de PrestaShop 8 lo reconozca.
Compatibilidad de módulos: plan de contingencia
Si un módulo crítico (como el de pago o envío) no tiene versión para PrestaShop 8, no te bloquees. Puedes:
- **Usar un módulo altern
