Índice
1. Entendiendo la Estructura de la Base de Datos de PrestaShop
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
5. Comparación de Métodos de Importación
6. Validaciones y Errores Comunes
Errores al Ejecutar el Script
Validaciones Adicionales
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:
Tabla | Propósito |
---|---|
ps_product | Contiene la información principal del producto (nombre, precio, stock, etc.). |
ps_product_lang | Almacena las traducciones y descripciones de los productos. |
ps_stock_available | Gestiona el stock disponible de cada producto. |
ps_category_product | Relaciona productos con categorías. |
ps_product_shop | Se 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étodo | Ventajas | Desventajas |
Importación Manual desde Back Office | Fácil de usar, no requiere programación. | Lento y poco eficiente para grandes volúmenes. |
Script PHP con CSV | Rápido, flexible y automatizable. | Requiere conocimientos técnicos. |
Módulos de Importación | Interfaz 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
Error | Solució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 column | Revisa 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.