Índice

Introducción

1. Entendiendo la Estructura de la Base de Datos de PrestaShop

2. Preparar el Archivo CSV

3. Crear el Script PHP para la Importación

3.1. Configurar PrestaShop en el Script

3.2. Leer el Archivo CSV

3.3. Insertar los Productos en la Base de Datos

3.4. Obtener el ID de la Categoría

4. Ejecutar el Script

5. Comparación de Métodos de Importación

6. Validaciones y Errores Comunes

Errores al Ejecutar el Script

Validaciones Adicionales

Conclusión

Introduccion

Importar productos a PrestaShop manualmente puede ser una tarea tediosa, especialmente si tienes una gran cantidad de artículos. Una solución eficiente es utilizar un script PHP que lea un archivo CSV y agregue productos directamente a la base de datos de PrestaShop. En este artículo, aprenderás cómo crear un script automatizado para esta tarea.

1. Entendiendo la Estructura de la Base de Datos de PrestaShop

Antes de importar productos, es fundamental comprender las tablas principales que se verán afectadas:

TablaPropósito
ps_productContiene la información principal del producto (nombre, precio, stock, etc.).
ps_product_langAlmacena las traducciones y descripciones de los productos.
ps_stock_availableGestiona el stock disponible de cada producto.
ps_category_productRelaciona productos con categorías.
ps_product_shopSe usa en entornos multitienda para definir el precio por tienda.

2. Preparar el Archivo CSV

El archivo CSV debe tener un formato claro y organizado. Un ejemplo de estructura puede ser:

reference;name;description;price;quantity;category
ABC123;Camiseta Azul;Camiseta de algodón azul;19.99;50;Ropa
DEF456;Pantalón Jeans;Pantalón vaquero clásico;39.99;30;Ropa
GHI789;Zapatillas Deportivas;Zapatillas para correr;59.99;20;Calzado

Requisitos del CSV:

  • Separador: ; (puedes cambiarlo según necesidades).

  • Encabezados: Usaremos estos nombres en el script PHP.

  • Codificación: UTF-8 para evitar problemas con caracteres especiales.


3. Crear el Script PHP para la Importación

3.1. Configurar PrestaShop en el Script

Antes de modificar la base de datos, necesitamos cargar el entorno de PrestaShop:

require(dirname(__FILE__).'/config/config.inc.php');
require(dirname(__FILE__).'/init.php');

Esto carga las funciones esenciales de PrestaShop.

3.2. Leer el Archivo CSV

function leerCSV($archivo) {
$productos = [];
if (($gestor = fopen($archivo, "r")) !== FALSE) {
fgetcsv($gestor, 1000, ";"); // Saltar la primera línea (encabezados)
while (($datos = fgetcsv($gestor, 1000, ";")) !== FALSE) {
$productos[] = [
'reference' => $datos[0],
'name' => $datos[1],
'description' => $datos[2],
'price' => (float) $datos[3],
'quantity' => (int) $datos[4],
'category' => $datos[5]
];
}
fclose($gestor);
}
return $productos;
}

3.3. Insertar los Productos en la Base de Datos

function importarProductos($productos) {
foreach ($productos as $producto) {
$product = new Product();
$product->reference = $producto[‘reference’];
$product->price = $producto[‘price’];
$product->active = 1;
$product->id_category_default = obtenerCategoriaID($producto[‘category’]);
$product->save();

// Insertar nombre y descripción en ps_product_lang
foreach (Language::getLanguages() as $lang) {
$product->name[$lang[‘id_lang’]] = $producto[‘name’];
$product->description[$lang[‘id_lang’]] = $producto[‘description’];
}
$product->update();

// Actualizar stock
StockAvailable::setQuantity($product->id, 0, $producto[‘quantity’]);
}
}

3.4. Obtener el ID de la Categoría

function obtenerCategoriaID($nombreCategoria) {
$sql = 'SELECT id_category FROM ps_category_lang WHERE name = "'.pSQL($nombreCategoria).'" LIMIT 1';
return Db::getInstance()->getValue($sql) ?: 2; // Retorna ID 2 (Categoría por defecto) si no encuentra la categoría
}

4. Ejecutar el Script

Guarda el script como importar_productos.php y ejecútalo desde la línea de comandos:

php importar_productos.php

Si prefieres ejecutarlo desde el navegador, asegúrate de que el archivo esté en la raíz de PrestaShop y accede a:

http://tudominio.com/importar_productos.php">UPDATE ps_specific_price SET price = price * 1.10 WHERE price > 0;

5. Comparación de Métodos de Importación

MétodoVentajasDesventajas
Importación Manual desde Back OfficeFácil de usar, no requiere programación.Lento y poco eficiente para grandes volúmenes.
Script PHP con CSVRápido, flexible y automatizable.Requiere conocimientos técnicos.
Módulos de ImportaciónInterfaz gráfica, opciones avanzadas.Puede ser costoso, depende de terceros.

Para tiendas con muchos productos, el script PHP es la mejor opción por su eficiencia y flexibilidad.


6. Validaciones y Errores Comunes

Errores al Ejecutar el Script

ErrorSolución
Call to undefined function pSQL()Asegúrate de incluir config.inc.php y init.php.
Unknown column 'price' in 'field list'Verifica que los nombres de las columnas coincidan con las tablas de PrestaShop.
Cannot insert NULL into columnRevisa que los datos del CSV sean correctos.

Validaciones Adicionales

Antes de insertar, podemos validar:

if (!is_numeric($producto['price']) || $producto['price'] <= 0) {
continue; // Saltar productos con precios inválidos
}

Esto evita insertar precios incorrectos.

Conclusión

Crear un script PHP para importar productos desde un CSV a PrestaShop es una solución eficiente para manejar grandes catálogos. Con este enfoque:

✅ Ahorras tiempo evitando la carga manual.

✅ Puedes actualizar masivamente productos fácilmente.

✅ Tienes control total sobre el proceso de importación.

Si necesitas personalizar la importación (atributos, imágenes, combinaciones), el script puede ampliarse sin problemas.

Ir al contenido