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 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

TipoUbicación / Uso
productsImágenes de productos en el catálogo y ficha
categoriesImágenes asociadas a categorías
manufacturersMarcas o fabricantes
suppliersProveedores
storesImá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.

Ir al contenido