Introducción
Las miniaturas de productos en PrestaShop son clave para la presentación visual de tu catálogo. Sin embargo, pueden dañarse o perderse tras migraciones, cambios de tema, actualizaciones de módulos o limpieza de imágenes antiguas.
En este artículo te enseño cómo forzar la regeneración de miniaturas desde un script PHP, con control total sobre los tamaños, tipo de contenido y comportamiento del proceso.
Índice
- 1. ¿Cuándo es necesario regenerar miniaturas?
- 2. ¿Qué tipos de miniaturas existen en PrestaShop?
- 3. Tablas y rutas que intervienen
- 4. Script PHP para regenerar miniaturas
- 5. Añadir control y filtros personalizados
- 6. Automatización, rendimiento y backups
- 7. Conclusión
1. ¿Cuándo deberías regenerar miniaturas?
- 🖼️ Has cambiado de tema y las imágenes no encajan con el nuevo diseño
- 📂 Has borrado imágenes manualmente desde FTP
- ⚠️ Tienes errores en el front al cargar ciertas imágenes
- 🔄 Has importado productos por CSV sin sus miniaturas
2. Tipos de miniaturas en PrestaShop
Tipo | Ubicación / Uso |
---|---|
products | Imágenes de productos en el catálogo y ficha |
categories | Imágenes asociadas a categorías |
manufacturers | Marcas o fabricantes |
suppliers | Proveedores |
stores | Imágenes de tiendas físicas |
3. Tablas y rutas involucradas
- ps_image: almacena las imágenes subidas por producto
- ps_image_type: define los tamaños de miniaturas por tipo (home_default, cart_default…)
- Ruta base:
/img/p/
con subdirectorios por ID de imagen
4. Script PHP para regenerar miniaturas
Este script recorre las imágenes de productos y regenera sus versiones usando las clases nativas de PrestaShop.
<?php require(dirname(__FILE__).'/config/config.inc.php'); require(dirname(__FILE__).'/init.php'); $images = Image::getAllImages(); foreach ($images as $img) { $id_product = $img['id_product']; $id_image = $img['id_image']; $image = new Image($id_image); $path = $image->getPathForCreation(); $types = ImageType::getImagesTypes('products'); foreach ($types as $type) { ImageManager::resize( $path.'.jpg', $path.'-'.$type['name'].'.jpg', (int)$type['width'], (int)$type['height'] ); } echo "Miniaturas regeneradas para ID $id_product - Imagen $id_image
"; } ?>
5. Filtros y personalización
💡 Puedes regenerar solo las imágenes faltantes añadiendo una verificación:
if (!file_exists($path.'-'.$type['name'].'.jpg')) { // regenerar solo si no existe }
O limitar a productos de una categoría específica, combinándolo con una subconsulta SQL.
6. Consideraciones de rendimiento
- Evita regenerar todas las imágenes en sitios con >10.000 productos sin paginar
- Haz un backup del directorio
/img/
antes de ejecutar - Considera ejecutar por cron en bloques de 100 o 500 imágenes
- Si usas CDN o caché de imágenes, invalida esos recursos al finalizar
7. Conclusión
Regenerar miniaturas desde PHP te permite ahorrar tiempo y tener control total sobre el proceso, sin depender del backoffice ni plugins.
¿Necesitas adaptar este script a tu tienda o hacerlo compatible con CDN y combinaciones? Escríbenos y lo dejamos funcionando a medida.