Puede que necesites cargar datos desde PrestaShop en Sales Layer. Esto puede generar un problema habitual debido a cómo PrestaShop gestiona los nombres de las imágenes.
Una vez que una imagen se sube a PrestaShop, se almacena con un sistema de identificación por carpetas y un nombre único por imagen. Por ejemplo:
Para productos: http://yourdomain/img/p/1/2/3/4/1234.jpg http://yourdomain/img/p/1/2/3/5/1235.jpg Para categorías: http://yourdomain/img/c/1/2/3/4/1234.jpg http://yourdomain/img/c/1/2/3/5/1235.jpg
Cuando accedes a esas mismas imágenes desde la tienda, PrestaShop sustituye el identificador de la imagen por el del producto o la categoría, de esta forma:
http://yourdomain/1234-prod_default/product.jpg http://yourdomain/1235-prod_default/product.jpg
Por eso, cuando la URL viene directamente de una exportación de PrestaShop, se exporta de esta forma: carpetas diferentes, pero el mismo nombre de imagen. Cuando Sales Layer la importa, como el nombre no puede duplicarse, solo se subirá una de las muchas imágenes que tienen el mismo nombre.
Para evitar esta situación, modifica la configuración desde PrestaShop. Ve a Configurar > Parámetros avanzados > Base de datos > Añadir nueva consulta SQL:

Añade la siguiente consulta para obtener el contenido que quieres exportar desde PrestaShop en un archivo CSV. Con ese contenido CSV, podrás importarlo en Sales Layer.
Este ejemplo utiliza un nombre de dominio ficticio.
SELECT aux.reference, Group_concat(aux.img SEPARATOR ' ,') AS imagenes
FROM (SELECT p.id_product, p.reference, CASE
WHEN Length(im.`id_image`) = 6 THEN
Concat('https://yourdomain.com', '/img/p/', INSERT(INSERT(INSERT(INSERT(INSERT(im.`id_image`, 2, 0, '/'), 4, 0, '/'), 6, 0, '/'), 8, 0, '/'), 10, 0, '/'), '/', im.`id_image`, '.jpg')
WHEN Length(im.`id_image`) = 5 THEN
Concat('https://yourdomain.com','/img/p/', INSERT(INSERT(INSERT(INSERT(im.`id_image`, 2, 0, '/'), 4, 0, '/'), 6, 0, '/'), 8, 0, '/'), '/', im.`id_image`, '.jpg')
WHEN Length(im.`id_image`) = 4 THEN
Concat('https://yourdomain.com', '/img/p/', INSERT(INSERT(INSERT(im.`id_image`, 2, 0, '/'), 4, 0, '/'), 6, 0, '/'), '/', im.`id_image`, '.jpg')
WHEN Length(im.`id_image`) = 3 THEN
Concat('https://yourdomain.com', '/img/p/', INSERT(INSERT(im.`id_image`, 2, 0, '/'), 4, 0, '/'), '/', im.`id_image`, '.jpg')
WHEN Length(im.`id_image`) = 2 THEN
Concat('https://yourdomain.com', '/img/p/', INSERT(im.`id_image`, 2, 0, '/'), '/', im.`id_image`, '.jpg')
WHEN Length(im.`id_image`) = 1 THEN
Concat('https://yourdomain.com', '/img/p/', INSERT(im.`id_image`, 2, 0, '/'), im.`id_image`, '.jpg')
ELSE ''
END AS 'img', im.cover
FROM ps_product p
LEFT JOIN ps_image im ON ( im.id_product = p.id_product )
ORDER BY cover DESC) AS aux
GROUP BY id_product;Hay dos aspectos que debes tener en cuenta sobre esta consulta:
- El nombre de dominio debe adaptarse en todos los valores concat que incluyan la URL.
- Debe incluirse el orden de las imágenes para que la imagen de portada quede en la posición correcta.
A partir de aquí, solo tendrás que adaptar la consulta para categorías y para cualquier otro campo de imagen que quieras importar en Sales Layer.
¿Le ha sido útil este artículo?
¡Qué bien!
Gracias por sus comentarios
¡Sentimos mucho no haber sido de ayuda!
Gracias por sus comentarios
Sus comentarios se han enviado
Agradecemos su esfuerzo e intentaremos corregir el artículo