Cómo exportar productos en Prestashop 1.7 sin instalar módulos adicionales.

Por alguna razón, Prestashop siempre ha puesto difícil exportar el catálogo de productos. Y, si querías algo decente, había que instalar un módulo de pago.

En la versión 1.7, se pueden exportar productos sin módulo. Os enseñamos cómo.

Exportar productos en Prestashop 1.7 sin instalar módulos de pago.

En Prestashop 1.7 tenemos dos opciones gratuitas.

Desde el menú de productos.

Podemos ir a Catálogo -> Productos y pinchar en la rueda dentada (encima de los productos a la derecha). Ahí se nos abre un menú y la primera opción es Exportar.

Esto nos exportará los productos a un fichero .csv que podemos abrir con Excel.

¿Problema? Sólo exporta las columnas que se muestran en el panel de productos, que no son muchas. La mayoría de los usuarios querrán más. Pero sirve para tener una exportación simple de productos.

Con un script de SQL.

No todos conocen que Prestashop tiene una funcionalidad muy potente. Una página, el Gestor SQL, desde la que poder guardar y ejecutar scripts de SQL (SQL es el idioma en el que está guardada la base de dato y desde el que se puede consultar directamente). De hecho cada día lo hacen más manejable, y ahora permiten, desde el editor, ver las tablas que existen en la base de datos y los nombres de los cambios de esas tablas.

Si, sabemos que no todo el mundo conoce SQL, pero os vamos a dejar una muestra de un script que extrae bastantes más campos. Si necesitáis más, no es muy difícil ver qué hace el script y añadir campos.

Para acceder a esta herramienta tenemos que ir a Parámetros Avanzados -> Base de datos -> Gestor SQL. Ahí podemos :

  • Añadir una consulta SQL. Recuerda que desde el editor puedes ver las tablas y variables.
  • Salvar las consultas para usarlas cuando quieras.
  • Editar y borrar consultas.
  • Ejecutar las consultas para ver los resultados en el backend.
  • Ejecutar las consultas para descargar el resultado en csv (icono nube)

Este es un SQL de ejemplo:

SELECT p.id_product, p.active, pl.name, GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ",") as categories, sa.price as precio_sin_IVA, p.id_tax_rules_group, p.reference, p.supplier_reference, p.id_supplier, p.id_manufacturer, p.upc, p.ecotax, p.weight, p.quantity, pl.description_short, pl.description, pl.meta_title, pl.meta_keywords, pl.meta_description, pl.link_rewrite, pl.available_now, pl.available_later, p.available_for_order, p.date_add, p.show_price, p.online_only, p.condition, p.id_shop_default, sav.quantity
FROM ps_product p
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product)
LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product)
LEFT JOIN ps_category_lang cl ON (cp.id_category = cl.id_category)
LEFT JOIN ps_category c ON (cp.id_category = c.id_category)
LEFT JOIN ps_product_tag pt ON (p.id_product = pt.id_product)
LEFT JOIN `ps_stock_available` sav ON (sav.`id_product` = p.`id_product` AND sav.`id_product_attribute` = 0 AND sav.id_shop = 1  AND sav.id_shop_group = 0 )
JOIN `ps_product_shop` sa ON (p.`id_product` = sa.`id_product` AND sa.id_shop = 1) 
WHERE pl.id_lang = 1
AND cl.id_lang = 1
AND p.id_shop_default = 1
AND c.id_shop_default = 1
GROUP BY p.id_product;

Nota: en el script, suponemos que ps_ es el prefijo de base de datos (es el de por defecto).