Cómo usar el sistema de anulación de PrestaShop sin romper el núcleo

El sistema de anulaciones de PrestaShop permite personalizar el comportamiento principal sin modificar los archivos originales. Sin embargo, si se usa de forma descuidada, crea tiendas frágiles que fallan al actualizar. Esta guía de Knowband explica cómo funcionan las anulaciones, cuándo usarlas y tres problemas críticos que todo desarrollador debe conocer.

¿Qué es el sistema de anulación?

PrestaShop usa la herencia de PHP para permitirte incorporar tu propia versión de cualquier clase principal sin modificar las originales. Cada clase principal se nombra con el sufijo “Core”, por ejemplo, “ProductCore”. Si creas /override/classes/Product.php con una clase llamada “Product” que extiende “ProductCore”, PrestaShop cargará tu versión. Lo mismo ocurre con los controladores.

Anule solo los métodos específicos que necesite modificar; nunca copie un archivo de clase completo. Esto simplifica la anulación y reduce la probabilidad de conflictos con futuras actualizaciones.

Ejemplo, exponer el nombre del controlador actual a su plantilla de encabezado:

Dónde colocar los archivos de anulación

Las anulaciones pueden residir en dos ubicaciones. El directorio global /override/ en la raíz de la instalación se activa inmediatamente después de borrar la caché. La mejor estrategia es agrupar las anulaciones dentro de un módulo.

Al colocar una anulación dentro de un módulo (p. ej., /modules/mymodule/override/classes/Product.php), PrestaShop la copia a /override/ durante la instalación y la elimina sin problemas al desinstalarla. Este es el enfoque recomendado.

Un ejemplo rápido de anulación de clase. Supongamos que desea exponer el nombre del controlador actual a su plantilla de encabezado:

// /anular/clases/controladores/FrontController.php

clase FrontController extiende FrontControllerCore {

    función pública initHeader() {

        self::$smarty->assign('controladoractual', obtener_clase($esto));

        devolver padre::initHeader();

    }}

Llama siempre al método padre a menos que tengas una razón deliberada para no hacerlo. Omitirlo interrumpirá silenciosamente la funcionalidad principal.

Anulación de clases de módulos y controladores

Desde PrestaShop 1.6, también puedes sobrescribir las clases de módulo. Añade “Override” al nombre de la clase (por ejemplo, BlockUserInfoOverride que extiende BlockUserInfo) y colócala en /override/modules/. El mismo patrón se aplica a los controladores de módulo. Después de cualquier sobreescritura, borra la caché, en concreto /cache/class_index.php, o no surtirá efecto.

Cuándo NO utilizar anulaciones

Las anulaciones son exclusivas: solo puede haber una por clase. También están prohibidas en los módulos del mercado y deben reservarse para personalizaciones de tiendas privadas. Antes de optar por una anulación, considere una de estas alternativas:

  • Manos: PrestaShop activa eventos de enlace cada vez que se carga una página: puedes aprovecharlos desde un módulo para ejecutar código personalizado o enviar contenido a la página sin necesidad de acercarte a una clase principal.
  • Anulaciones de servicios de Symfony: Las partes de PrestaShop migradas a Symfony ofrecen una ruta más limpia a través del contenedor de servicios. Se decora o reemplaza un servicio en lugar de modificar la clase en sí.
  • Modelo de objeto personalizado: ¿Necesitas añadir campos a una entidad principal? Crea tu propio ObjectModel con su propia tabla en lugar de modificar el existente.

Mantener las anulaciones seguras mediante actualizaciones

Las actualizaciones de PrestaShop pueden cambiar silenciosamente las firmas de los métodos, dejando la anulación funcionando con suposiciones obsoletas. Considere cada anulación como algo que debe revisarse después de cada actualización. Comente qué cambió y por qué, revise el registro de cambios y mantenga la anulación lo más pequeña posible. Una anulación limitada y bien comentada que invoque los métodos principales correctamente sobrevive a las actualizaciones. Una copia completa de la clase es un error a punto de aparecer.

La caché “fantasma”: por qué su anulación parece invisible

La principal razón por la que los desarrolladores creen que su anulación falla: PrestaShop no escanea /override/ en cada petición. Compila un mapa de clases en /cache/class_index.php, y hasta que ese archivo se elimine y se regenere, la anulación es invisible, independientemente de lo correcto que sea el código. Borrar la caché de Smarty no es suficiente. Elimine class_index.php manualmente mediante FTP/SSH, desde Parámetros Avanzados > Rendimiento en el back office o desde la consola de Symfony.

Figura 1: El flujo del sistema de anulación de PrestaShop y la función de /cache/class_index.php.

 

El muro de Symfony: Las modificaciones heredadas no funcionan para los controladores modernos

Este sistema PHP heredado solo funciona en la antigua capa ObjectModel de PrestaShop. A partir de PS 1.7, las áreas clave del back office, incluyendo las nuevas pantallas de Página de Producto y Pedido, se han reescrito en Symfony. El sistema de anulación de PHP no afecta a estos controladores Symfony. Para aquellos, utilice Decoración de serviciosEncapsular o reemplazar un servicio mediante el archivo services.yml del módulo. Si una anulación no tiene efecto incluso después de borrar class_index.php, es probable que el controlador esté migrado a Symfony.

Resolución de conflictos: cuando dos módulos quieren la misma clase

Cuando dos módulos sobrescriben la misma clase, PrestaShop genera un error en la segunda instalación y deja la sobreescritura inactiva. La solución es manual: abra ambos archivos, fusione todos los métodos en un solo archivo /override/ que extienda la clase Core y luego elimine class_index.php. Añada comentarios que indiquen qué módulo contribuyó con cada método. Por eso las sobreescrituras están prohibidas en los módulos de la tienda online; los conflictos se convierten en un problema para el vendedor. Si crea para otros, use ganchos.

Figura 2: Cómo surgen los conflictos de anulación cuando dos módulos apuntan a la misma clase y la resolución de la fusión manual.

Sobre Knowband

Knowband es un proveedor confiable de plugins y extensiones de comercio electrónico con años de experiencia ayudando a comerciantes en línea a crear tiendas más rápidas, inteligentes y con más funciones. Ya sea que gestiones tu tienda en PrestaShop, OpenCartShopify, WooCommerce, Magento, o cualquier otra plataforma importante, Knowband ofrece una amplia gama de complementos y extensiones listos para usar que lo ayudan a mejorar la funcionalidad, mejorar el rendimiento y brindar una mejor experiencia de compra, sin necesidad de construir desde cero.

Novedades de PrestaShop 9.0: Guía completa de funciones y migración

¿Por qué PrestaShop?

PrestaShop es una plataforma líder de comercio electrónico de código abierto, conocida por su flexibilidad, potentes funciones y licencias sin coste. Conocida por su interfaz intuitiva, compatibilidad con varios idiomas y divisas, y su completo ecosistema de módulos y temas, es ideal para pymes que crean tiendas online personalizadas. PrestaShop 9.0 representa un hito importante, ya que ofrece mejoras de rendimiento y avances arquitectónicos esenciales que reflejan los estándares de desarrollo modernos, la escalabilidad y la facilidad de mantenimiento a largo plazo.

¿Qué novedades hay en PrestaShop 9.0?

PrestaShop 9.0 trae una modernización completa del marco central: un gran avance que redefine el modo en que los desarrolladores y propietarios de tiendas interactúan con el sistema.

Cambios en la arquitectura central

Integración completa con SymfonyPrestaShop 9 finaliza su transición al framework Symfony, proporcionando una base moderna y estable para el desarrollo futuro. Las clases antiguas y los controladores obsoletos se han descontinuado o reemplazado, lo que hace que el sistema sea más fácil de mantener y se ajuste a las mejores prácticas.

Compatibilidad con PHP 8.1+:Requiere PHP 8.1 o superior, lo que garantiza la compatibilidad con las últimas funciones, seguridad mejorada y un rendimiento más rápido.

Doctrina DBAL:La capa de abstracción de base de datos mejora las interacciones de la base de datos, ofreciendo una mejor abstracción, creación de consultas y capacidad de prueba, lo que resulta especialmente beneficioso para personalizaciones a gran escala.

Desarrollo centrado en el compositor:Composer 2.x ahora juega un papel central en el flujo de trabajo de desarrollo, manejando la administración de dependencias, la integración de módulos y la carga automática sin problemas. Esto simplifica el control de versiones y mejora la compatibilidad CI/CD.

Mejoras en el back office y para desarrolladores

Al centrarse en las mejoras del backend, los comerciantes y desarrolladores notarán lo siguiente:

  • Cargas de páginas más rápidas y tiempos de respuesta del servidor mejorados
  • Base de código más limpia mediante la eliminación de la lógica heredada
  • Modularidad mejorada para módulos más limpios e independientes
  • Cobertura de pruebas más sólida para versiones estables y seguras

Si bien los cambios en la interfaz de usuario son mínimos, estas actualizaciones internas mejoran drásticamente la estabilidad y la capacidad de mantenimiento de la tienda.

Guía de migración: De PrestaShop 8 a 9

Método 1: Actualización con un clic (recomendado)

Herramientas disponibles:

  • Módulo oficial de actualización con un solo clic: módulo de actualización estándar de PrestaShop que gestiona las transiciones de versión automáticamente
  • MigrationPro: Solución de terceros que respalda la migración con transferencia de datos integral
  • PrestaShop Migrator: Solución alternativa con un solo clic para actualizaciones sin inconvenientes

Ventajas:

  • Proceso automatizado con mínima intervención manual.
  • Comprobaciones de integridad de datos integradas
  • Reducción del riesgo de error humano
  • Tiempo de migración más rápido
  • Creación automatizada de copias de seguridad

Proceso de copia de seguridad de actualización automática:

  1. BackupInitialization: Inicio del proceso, borrando archivos temporales sobrantes
  2. BackupFiles: copia de seguridad completa de archivos de la tienda, temas, módulos, imágenes y código personalizado
  3. BackupDatabase: crea una copia de seguridad completa de toda la base de datos, incluidas todas las tablas y los datos almacenados.
  4. Déjame saber si prefieres una versión más concisa o más detallada.
  5. BackupComplete: Finalización del proceso con verificación

Proceso de reversión:Si la actualización encuentra problemas, puede revertirla fácilmente a través de la sección “Revertir” del módulo de actualización automática seleccionando el archivo de respaldo y monitoreando el progreso de la reversión.

Migración de datos:Maneja automáticamente la transferencia de productos, categorías, atributos, cuentas de clientes, historial de pedidos, páginas CMS, configuraciones, imágenes y configuraciones de módulos compatibles.

Método 2: Migración manual (demasiado laboriosa)

Nueva instalación de PrestaShop 9 seguida de migración manual de datos.

Vista general del proceso:

  1. Revisar los requisitos del servidor: PHP 8.1+, MySQL 5.7+/MariaDB 10.3+, Composer 2.x, Apache/Nginx
  2. Complete Backup:Base de datos, archivos, configuración, código personalizado
  3. Instalar PrestaShop 9.0:Instalación nueva mediante Git y Composer
  4. Estrategia de migración de datos:Exportar desde PS8 (productos, clientes, pedidos, CMS, configuraciones) e importar a PS9 usando herramientas nativas, módulos de terceros o entrada manual
  5. Evaluación de compatibilidad de módulos:Auditar los módulos existentes, actualizar los compatibles, identificar alternativas para los módulos incompatibles
  6. Reconstrucción del tema:Reconstruir temas utilizando la arquitectura actualizada de PS9, adaptarlos a los requisitos de Symfony
  7. Pruebas integrales:Funcionalidad de front office (navegación, pago, móviles) y back office (gestión de productos, pedidos, informes)

Recomendación

Método 1 (Actualización con un clic) Se recomienda encarecidamente a la mayoría de los comerciantes debido a:

  • Tiempo de migración significativamente reducido
  • Menor riesgo de pérdida o corrupción de datos
  • Manejo automatizado de relaciones de datos complejas
  • Capacidades de reversión integradas
  • Disponibilidad de soporte profesional

Considere el Método 2 (migración manual) solo para requisitos de personalización específicos que requieran una nueva instalación o cuando las herramientas automatizadas sean incompatibles.

Lista de verificación posterior a la migración

Independientemente del método elegido:

  • Verificar todas las funciones críticas de la tienda
  • Pruebe las integraciones de pago y envío
  • Confirmar la configuración de SEO y las estructuras de URL
  • Actualice los certificados DNS y SSL si es necesario
  • Supervisar el rendimiento del sitio y la velocidad de carga
  • Capacitar al personal sobre los cambios de interfaz

Conclusión

PrestaShop 9.0 marca un rumbo firme hacia una mayor velocidad, mayor seguridad y un ecosistema más centrado en el desarrollador. Si bien la actualización requiere planificación y esfuerzo, los beneficios a largo plazo son considerables: mejor rendimiento, código más limpio, mayor escalabilidad y herramientas modernas.

Si utiliza una versión anterior, evalúe el valor a largo plazo de migrar a PrestaShop 9. Si no está seguro del proceso o no cuenta con desarrolladores internos, se recomienda consultar con un experto en PrestaShop o un socio certificado.

¿Aún estás decidiendo si cambiar?

Si no está seguro de si pasar de PrestaShop 8 a 9 es el paso correcto para su tienda, lo invitamos a consultar nuestra comparación detallada y las opiniones de nuestros expertos.

Descubra los beneficios clave, los riesgos potenciales y el impacto real de la migración y tome una decisión informada para su negocio.

Explora la guía comparativa de PrestaShop 8 vs 9