Hola a todos.
Estoy intentando hacer una exportación masiva de productos para un comparador y para facebook. El problema es que casi todos mis productos tienen atributos y despues de mucho buscar, estoy desesperada porque no encuentro nada que funcione (y sea gratis).
He leído sobre gente que en el pasado ha hecho exportaciones de forma masiva con consultas sql pero no soy capaz de generar una consulta que funcione.
Los datos que necesito exportar, teniendo en cuenta que tengo productos con atributos (y en cada atributo referencia, ean13 y precio diferente) son:
nombre
Atributo
Valor del atributo
descripción corta
referencia de proveedor
ean13
url producto
url imagen
precio de venta con impuestos
Espero que podais ayudarme, no se nada de lenguaje sql
URL del sitio: Contenido solo visible a usuarios registrados
Hola Ana.
Prueba lo siguiente:
.- Accede a Parámetros Avanzados -> Consultas MySQL
.- Pulsa en Añadir una nueva consulta SQL
Nombre de la consulta SQL: Añade el nombre que quieras para tener identificado
Consulta SQL, añade lo siguiente:
SELECT pat.id_product , prd.reference , GROUP_CONCAT(DISTINCT(concat(atgl.name, ":", atg.group_type, ":", atg.position)) SEPARATOR ", ") , GROUP_CONCAT(DISTINCT(concat(pal.name, ":", atg.position)) SEPARATOR ", ") , pat.supplier_reference , pat.reference FROM ps_product_attribute pat INNER JOIN ps_product prd ON (prd.id_product = pat.id_product) LEFT JOIN ps_product_attribute_combination pac ON (pat.id_product_attribute = pac.id_product_attribute) LEFT JOIN ps_attribute att ON (pac.id_attribute = att.id_attribute) LEFT JOIN ps_attribute_group atg ON ( atg.id_attribute_group = att.id_attribute_group) LEFT JOIN ps_attribute_group_lang atgl ON ( atgl.id_attribute_group = atg.id_attribute_group) LEFT JOIN ps_attribute_lang pal ON (pac.id_attribute = pal.id_attribute AND pal.id_lang = atgl.id_lang) WHERE atgl.id_lang = 1 GROUP BY pat.id_product_attribute ORDER BY pat.id_product, pac.id_attribute
Nota: tienes que modificar ps_attribute por la extensión que tienen tus tablas de prestashop.
¿ como localizar la extensión de tus talabas ?, fácil, en la misma ventana veras el apartado Lista de tablas de MySQL, en esa lista puedes encontrar la extensión de tus tablas.
.- Guarda los cambios
.- selecciona exportar en la consulta que creaste.
Comprueba si son esos los resultados que buscabas
Un saludo
Me saca bien las referencias de proveedor, las id del producto (que no las quiero, solo quiero el nombre), el atributo y valor del atributo... el resto nada. ¿Como completo la consulta?
descripción corta
referencia de proveedor
ean13
url producto
url imagen
precio de venta con impuestos
No me los exporta en el mismo orden, así que no puedo copiar unas columnas de un archivo y pasarlos a otro para completarlo. Además, la exportación de productos tiene el inconveniente de que, no se por qué, pero parte de los precios me los saca en formato de fecha.
Tampoco saca la url del producto ni el ean13.
Necesito todos los datos en el mismo archivo:
nombre
Atributo
Valor del atributo
descripción corta
referencia de proveedor
ean13
url producto
url imagen
precio de venta con impuestos
Hola Ana.
Adjunto tienes un modulo para la exportación de productos que te saca todos los datos, menos las variaciones que las puedes sacar de la consulta que te pase anteriormente:
Luego con exel podrías relacionar los IDE de los productos y con alguna función que te añada las combinaciones para ese archivo.
Un saludo
las url estan incompletas y los ean13 no salen
Hola
Si quieres el nombre se complica un poco la consulta porque se tomará de la tabla de idiomas, sin embargo el ean13 si que lo obtienes, he modificado la consulta, relacionado con el idioma 1 (prdlang.id_shop = 1)
Verifica la siguiente consulta:
SELECT pat.id_product , prd.ean13 , prdlang.name , prd.reference , GROUP_CONCAT(DISTINCT(concat(atgl.name, ":", atg.group_type, ":", atg.POSITION)) SEPARATOR ", ") , GROUP_CONCAT(DISTINCT(concat(pal.name, ":", atg.POSITION)) SEPARATOR ", ") , pat.supplier_reference , pat.reference FROM ps_product_attribute pat INNER JOIN ps_product prd ON (prd.id_product = pat.id_product) INNER JOIN ps_product_lang prdlang ON (prd.id_product = prdlang.id_product and prdlang.id_shop = 1) LEFT JOIN ps_product_attribute_combination pac ON (pat.id_product_attribute = pac.id_product_attribute) LEFT JOIN ps_attribute att ON (pac.id_attribute = att.id_attribute) LEFT JOIN ps_attribute_group atg ON ( atg.id_attribute_group = att.id_attribute_group) LEFT JOIN ps_attribute_group_lang atgl ON ( atgl.id_attribute_group = atg.id_attribute_group) LEFT JOIN ps_attribute_lang pal ON (pac.id_attribute = pal.id_attribute AND pal.id_lang = atgl.id_lang) WHERE atgl.id_lang = 1 GROUP BY pat.id_product_attribute ORDER BY pat.id_product, pac.id_attribute
Saludos.
el ean13 sigue sin salir... ten en cuenta que al tener atributos muchos de mis productos los ean13 válidos son los de las combinaciones, los asociados al atributo... además seguimos sin tener la url completa del producto ni de las imagenes
HOla
En la consulta anterior cambia
prd.ean13
por
pat.ean13
Esto te dará el ean13 de las combinaciones, cuando dices url te refieres a una careacterística que has definido?, no hay campo url para el producto, las imágenes son por combinación o es a nivel del producto.
La consulta se puede volver más compleja si se agrega nuevas tablas, tal vez si vas a estar haciendo siempre este tipo de trabajo si que sea bueno evaluar algún módulo de exportación, revisa:
https://addons.prestashop.com/es/importacion-exportacion-de-datos/6253-export-products.html
Saludos.
https://addons.prestashop.com/es/importacion-exportacion-de-datos/6253-export-products.html
Las imágenes a nivel de producto puedan servir.
La importación va a ser ahora porque una vez creado el archivo no es tan complicado mantenerlo manualmente con el nivel de cambios que estoy teniendo. Más adelante, si veo que se me complica, miraría los módulos. De todas formas, alguno lo he probado pero también me ha dado problemas, especialmente con todo lo relacionado con las combinaciones.
Las url, solo me saca la parte reescrita, pero no me saca la raíz. Es decir, me da como resultado:
261-planet-pet-snack-tiras-pollo.html
cuando la url que necesito es:
friendlypet.es/shop/es/snacks-y-compementos/261-planet-pet-snack-tiras-pollo.html
Este problema ya lo tuve con el feed de google y lo solucioné añadiendo una regla a la importación, pero ahora no se como arreglarlo.
Me veo creando el csv a mano y es un curro de la leche...
Hola
Para el tema de url , lo que quieres es la url absoluta, pero esto se puede formar en base a la url de tu sitio y la url de la categoría, ya que PrestaShop no almacena urls absolutas, revisa:
https://www.prestashop.com/forums/topic/144664-solved-export-product-urls/
Esta concatenación la puedes realizar ya en tu CSV o en Excel, no es necesario que sea parte de la consulta.
En tu consulta tendrías que añadir la categoría y además las tablas de imágenes relacionadas, si te complicas con esto te sugiero consultar a un desarrollador ya que la consulta podría complicarse.
Saludos.
¿Debo entender entonces que la consulta sql que pido no es viable? ¿Necesito pagar por un módulo o un desarrollador para hacer una exportación completa de mis productos con combinaciones? Prefiero echarle un mes de trabajo y crear el csv yo sola, pero me sorprendería que prestashop permita las importaciones en csv y luego de problemas con las exportaciones ¿Es así como funciona?
Hola
La consulta que quieres si es viable, lo único que es compleja, PrestaShop es gratis y el código es abierto, sin embargo hay cosas que no vienen implementadas y es allí en donde entran los módulos externos que en la mayoría de los casos son de pago.
Para el caso de las imágenes, en la base de datos sólo se almacena el ID, luego PrestaShop resuelve este ID y ubica la imagen en una carpeta, tu consulta para obtener la ID de la imagen sería agregando la tabla ps_image
SELECT pat.id_product , prd.ean13 , img.id_image , prdlang.name , prd.reference , GROUP_CONCAT(DISTINCT(concat(atgl.name, ":", atg.group_type, ":", atg.POSITION)) SEPARATOR ", ") , GROUP_CONCAT(DISTINCT(concat(pal.name, ":", atg.POSITION)) SEPARATOR ", ") , pat.supplier_reference , pat.reference FROM ps_product_attribute pat INNER JOIN ps_product prd ON (prd.id_product = pat.id_product) INNER JOIN ps_product_lang prdlang ON (prd.id_product = prdlang.id_product and prdlang.id_shop = 1) LEFT JOIN ps_image img ON (prd.id_product = img.id_product) LEFT JOIN ps_product_attribute_combination pac ON (pat.id_product_attribute = pac.id_product_attribute) LEFT JOIN ps_attribute att ON (pac.id_attribute = att.id_attribute) LEFT JOIN ps_attribute_group atg ON ( atg.id_attribute_group = att.id_attribute_group) LEFT JOIN ps_attribute_group_lang atgl ON ( atgl.id_attribute_group = atg.id_attribute_group) LEFT JOIN ps_attribute_lang pal ON (pac.id_attribute = pal.id_attribute AND pal.id_lang = atgl.id_lang) WHERE atgl.id_lang = 1 GROUP BY pat.id_product_attribute ORDER BY pat.id_product, pac.id_attribute
Si quieres ver la imagen tendrías que crear la url, revisa:
https://www.prestashop.com/forums/topic/83266-in-what-table-is-the-reference-to-the-product-image-file-name/
A esto me refería cuando te comento que se vuelve complejo, si no conoces mucho de código.
Lo que podrías evaluar es probar exportar por partes para que no lo resuelvas todo en una sola consulta, por ejemplo exporta desde PrestaShop con algunos campos de productos, y luego únelos con el de esta consulta.
Saludos.
ok, veré a ver qué puedo hacer