Si lo que buscas es un script que te permita importar datos a Prestashop desde un ERP, fuentes CSV/XML o varios proveedores, lee este otro post.
Estoy en pleno desarrollo de una tienda virtual con Prestashop para un cliente del sector de la ferretería. El cliente tiene su aplicación de gestión de productos en el servidor de la empresa y la base de datos de estos debe de ser sincronizada con el e-commerce de forma automática de modo que cualquier modificación en la misma se vea actualizada en la base de datos del Prestashop.
Inicialmente había pensado en la posibilidad de hacer un script que sincronizara las dos bases de datos conectando directamente con ellas pero visto que el Prestashop dispone de un módulo de importación a partir de ficheros CSV, he decidido utilizarlo.
En esta arquitectura existen dos partes, la parte del cliente situada en el servidor local de la empresa y la parte de la tienda virtual situada en un alojamiento web, que entre otras cosas requiere dar de alta reglas en el firewall para permitir conectar al Mysql desde una IP externa, cosa que finalmente no necesitaremos.
En la parte del cliente programaré un script que exporte en el formato CSV, esperado por Prestashop, tanto las categorías como los productos -en este caso lo único que necesito exportar- y que suba ambos ficheros al servidor donde está ubicada la tienda.
En la parte de la tienda virtual se requiere un script que sea capaz de lanzar el proceso de importación y es el que describiré a continuación.
Existía la posibilidad, en esta segunda parte, de simular la navegación utilizando CURL, haciendo el login y posterior proceso de importación, pero complica mucho más las cosas cuando lo que necesitamos es simplemente llamar a la clase AdminImport y utilizar su funcionalidad.
Aquí dejo el código del script que, situado en la parte de la tienda, lanza una importación de un fichero CSV productos (pro.csv) o categorías (cat.csv), según se le indique por GET[‘entity’]
Los ficheros CSV a importar deben encontrarse en el directorio /admin/import mientras que nuestro script debe de estar situado en el directorio /admin del Prestashop.
Espero que le pueda (re)servir a alguien.
<?php define('PS_ADMIN_DIR', getcwd()); include(PS_ADMIN_DIR.'/../config/config.inc.php'); include(PS_ADMIN_DIR.'/functions.php'); include_once './tabs/AdminImport.php'; if (!isset($_GET['entity'])) die(); $import = New AdminImport(); switch ($_GET['entity']) { case 0: loadCategoriesPost(); $import->categoryImport(); break; case 1: loadProductsPost(); $import->productImport(); break; default: die(); break; } function loadCategoriesPost() { $_POST = array ( 'tab' => 'AdminImport', 'skip' => '0', 'csv' => 'cat.csv', 'convert' => '', 'entity' => '0', 'separator' => ';', 'multiple_value_separator' => ',', 'import' => 'Importar datos CSV', 'type_value' => array ( 0 => 'id', 1 => 'active', 2 => 'name', 3 => 'parent', 4 => 'description', 5 => 'meta_title', 6 => 'meta_keywords', 7 => 'meta_description', 8 => 'link_rewrite', 9 => 'image', ), ); } function loadProductsPost() { $_POST = array ( 'tab' => 'AdminImport', 'skip' => '0', 'csv' => 'pro.csv', 'convert' => '', 'entity' => '1', 'separator' => ';', 'multiple_value_separator' => ',', 'import' => 'Importar datos CSV', 'type_value' => array ( 0 => 'id', 1 => 'active', 2 => 'name', 3 => 'category', 4 => 'price_tex', 5 => 'tax_rate', 6 => 'wholesale_price', 7 => 'on_sale', 8 => 'reduction_price', 9 => 'reduction_percent', 10 => 'reduction_from', 11 => 'reduction_to', 12 => 'reference', 13 => 'supplier_reference', 14 => 'supplier', 15 => 'manufacturer', 16 => 'ean13', 17 => 'ecotax', 18 => 'weight', 19 => 'quantity', 20 => 'description_short', 21 => 'description', 22 => 'tags', 23 => 'meta_title', 24 => 'meta_keywords', 25 => 'meta_description', 26 => 'available_now', 27 => 'available_later', 28 => 'image', 29 => 'no', ), ); } ?> |
Hay una alternativa a este script que permite importar los datos a Prestashop desde un ERP, fuentes CSV/XML o múltiples fuentes, como proveedores de drop shipping.
Para saber más haz click aquí
srk says
He quitado todo el código menos las librerías que carga y la linea que crea el objeto y me sigue saliendo el error.
Este es el código :
No se que mas mirar…
srk says
Parece que el código no se ha visto .
define(‘PS_ADMIN_DIR’, getcwd());
include(PS_ADMIN_DIR.’/../config/config.inc.php’);
include(PS_ADMIN_DIR.’/functions.php’);
include_once ‘./tabs/AdminImport.php’;
if (!isset($_GET[‘entity’])) die();
$import = New AdminImport();
srk says
Buenas, tras revisar el código de Adminimport.php, he conseguido comprobar en que linea me aparece el Fatal error y es $categoryAlreadyCreated = Category::searchByNameAndParentCategoryId((int)Language::getIdByIso(trim(Tools::getValue(‘iso_lang’))), trim($category->name[$defaultLanguageId]), $category->id_parent);
Si cambio la linea y le añado el idioma 3, me graba el registro $categoryAlreadyCreated = Category::searchByNameAndParentCategoryId(3, trim($category->name[$defaultLanguageId]), $category->id_parent);
Alguna solución ??
Gracias.
evsninja says
Para los 1.5 que tengáis el problema “Fatal error: Cannot redeclare class…”, probad comentando la línea include_once ‘../controllers/admin/AdminImportController.php’;
Para los que no consigáis que os importe las imágenes, probad a añadir estas líneas en AdminImportController.php, dentro de la función “public function productImport()”, justo antes de if (isset($product->image) && is_array($product->image) && count($product->image))
Añadid esto:
if(!is_array($product->image))
$product->image = explode(“,”,$product->image);
Espero que le sirva a alguien, a mi así me funciona perfecto.
Miguel says
Hola, te quería preguntar si puedes compartir el código para la inserción directa en bd. Lo que tengo que lograr es leer un web servise de soap y actualizar todo el contenido a partir del XML retornado. Ya logro leer el web service y bueno actualizo una base de datos correctamente en una página auxiliar que hice con wordpress y unas tablas que creé. Pero me gustaría poder hacer la importación a una aplicación más para ecommerce como es prestashop, pero no conozco la bd lo suficiente como para saber que insertar en cada tabla. Claro que utilizando el script sería mejor, pero veo que han tenido problemas con las versiones y me manejo más con BD.
Gracias.
admin says
Hola Miguel,
cuando desarrollé la inserción directa en BDD era contra un Prestashop 1.2.x. Ha llovido bastante pero las tablas siguen siendo básicamente las mismas.
Para la información básica del producto, tabla product, donde los textos se introducen, al ser un sistema multiidioma en product_lang.
Las categorías se organizan en la tabla category, los textos que las definen se encuentran en category_lang y la relación con los productos se registra en category_product.
Puedes encontrar esquemas de la base de datos preguntándole a Google. Aquí te dejo uno 😉
http://doc.prestashop.com/download/attachments/9961497/pdm-1.5.png
Carlos says
VER SCRIPT NUEVO ACTUALIZADO http://www.mediafire.com/view/65evxlzxm8chda3/script_import.php
admin says
Muy buena aportación, Carlos.
Gracias.
Pedro says
Gracias por tu script Carlos, pero a mi me sigue sin funcionar. Llevo dos semanas intentando conseguir que funcione pero no hay manera. Mi Prestashop es el 1.5.4.1, he comprobado los archivos de configuración como el de la clase AdminImportController que es de donde vienen los métodos de importación aqui utilizados y no veo ningún fallo para que no me importe el csv a la tienda Prestashop. Agradecería cualquier ayuda al respecto por que estoy completamente aturado por esta situación.
Axier says
Hola Pedro,
Estoy exactamente igual que tú. No me funciona en la 1.5.4.1.
El script de Carlos tiene algunas cosas mal, como el nombre del campo “url_rewrite” que en la 1.5.4.1 se llama “link_rewrite”, y lo mismo con el campo “root_category” que realmente es “is_root_category”.
Al margen de eso, el script se queda parado cuando se instacia a $import->categoryImport();
No hace nada, ni muestra error alguno. La solución del post 102 no es aplicable en esta versión, por lo que no tengo forma de depurar para ver dónde está el fallo.
Había optado por usar este script, ya que hacerlo via REST me estaba costando bastante, pero voy a tener que tirar la toalla con esto…
Espero que alguien que haya encontrado una solución o pista la comparta.
Un saludo
Carlos says
Hola Axier, probaste cargando la categoria manualmente y luego usar el script para importar los productos?
Carlos says
Probar con este nuevo script tiene pequeñas correcciones:
https://www.mediafire.com/view/6gfjeheg7itc11u/script_import.php
Axier says
Mas pistas. Para activar la depuración en la 1.5.4.1 hay que hacerlo en el fichero config/defines.inc.php
En la linea 28 aparece esto:
define(‘_PS_MODE_DEV_’, false);
Hay que dejarla así:
define(‘_PS_MODE_DEV_’, true);
Con eso, ya funciona la depuración.
Ahora que ya me funciona la depuración, veo que mi problema es “Cannot redeclare class AdminImportControllerCore”.
En posts anteriores, dicen de comentar la linea “include_once ‘../controllers/admin/AdminImportController.php’; pero me sigue apareciendo el mensaje de error. Es como si no la hubiera comentado.
¿por qué me sigue dando ese error si he comentado la linea?
Espero que entre todos demos con ello.
Un saludo y seguimos.
Axier says
Hola Carlos,
Respecto al post 144, sí, si cargo el CSV manualmente funciona bien, pero vía script no.
Ya he visto tu nuevo script con las modificaciones que comentaba en el tema de las categorias. Aunque sigo sigo igual. 🙁
Lo que me tiene intrigado es porqué me sigue apareciendo el mensaje de “Cannot redeclare class AdminImportControllerCore” si tengo la linea de “include_once ‘../controllers/admin/AdminImportController.php’;” comentada
A ver si damos con ello.
Un saludo,
Axier
Axier says
YA FUNCIONA!!!. Resulta que en la version 1.5.4.1 hay que instanciar a:
$import = New AdminImportController();
Si se instancia a $import = New AdminImportControllerCore(); da el error.
Acabo de importar correctamente el csv a través del script.
Espero que le sirva a toda la gente que tenía problemas en la última versión de prestashop.
Carlos says
eso ya estaba
//$import = New AdminImportControllerCore(); //para version 1.5.4.1
$import = New AdminImportController();
Pedro says
Gracias Axier y Carlos por vuestros post.
En el archivo AdminImportController he cambiado la clase AdminImportControllerCore por AdminImportController y parece que me hace algo por que ya no da el error comentado por Axier aunque me sigue sin importar las categorias que es lo que estoy probando.
Para lo de la depuración he cambiado lo que dice Axier en el comentario 146 y no me da ningún error, pero no me importa el csv.
Creo que estamos un poco mas cerca de conseguir desarrollar un buen script entre todos.
Saludos.
Alberto says
Impresionante.
Muchas gracias a todos. Me funciona correctamente con la versión 1.4 y la 1.5.4.1. Tengo un script para cada versión.
Lo único que falta aclarar para la versión 1.5.4.1 es que en el fichero AdminImportController la clase se sigue llamando AdminImportControllerCore y se debe llamar AdminImportController.
No sé si se ha comentado antes.
Alberto says
Siguiendo con el tema anterior al cambiar el nombre a la clase deja de funcionar la opción de importación de CSV desde el BackOffice.
Otro problema que me he encontrado es que no me importa las imágenes de las categorías. He comprobado que están en la carpeta correcta pero aún así no las integra ni con el script ni mediante el propio BackOffice.
Las imágenes las estoy subiendo a /admin/import/img.
Me he dado cuenta que mientras con la 1.4 si que podía ver una imagen escribiendo su url con la 1.5 no me deja. He revisado permisos y cambiado pero nada.
La solución subirlas a la carpeta /upload y en el fichero csv poner la ruta a esta url.
Alberto Fernández says
Hola amigos, yo tambien tengo la versión 1.5.4.1 y seguí vuestras indicaciones pero no me funciona alguien que le funcione sería tan amable de poner los cambios que hizo por favor.
Alberto Fernández says
Buenas, ya tengo el script para 1.5.4.1 listo pronto publicaré aquí la solución de forma correcta para esta versión.
Saludos!
Bosco says
El problema de que no se importen imágenes en la versión 1.5.3.1 se resuelve aplicando este cambio:
https://github.com/PrestaShop/PrestaShop/commit/8d7196daf3b39d280c631882f0e3ebe473233d07
Lo encontré navegando por aquí: http://www.prestashop.com/forums/topic/209716-import-extern-url-images-from-csv/
Espero que os sirva, Saludos!
blackout says
Hola
Podeis pasar la solucion para poder importar imagenes mediante csv en la 1.5.4.1?
gracias
admin says
Hola backout,
un compañero de los comentarios me ha pasado el código que, si no me equivoco, soluciona ese caso. Durante la semana que viene espero poder colgarlo en este post.
Un saludo
blackout says
Gracias, estare atento. Yo he probado en local y si las importa tanto las imagenes como las categorias o subcategorias. Pero en el hosting no
Angel says
Hola, estoy intentando usar desde linea de comandos este script, ya que tengo en un cron un .php que me recoge datos del proveedor, los trata y genera los .csv para despues cargarlos.
Es posible lanzar de alguna manera las cargas de datos desde linea de comandos en vez de usar por ejemplo : http://www.midominio.com/admin123/script_import.php?entity=1 ???
Gracias
admin says
Hola Ángel,
supongo que sí será posible aunque seguramente deberás de adaptar parte del código. Si alguien lo consigue, por favor, que comparta la experiencia.
Alberto Fernández says
Hola Ángel, yo lo hago igual que tú pero como el cron no te deja programar tareas con archivos php que piden parámetros lo que hago es usar una librería de php que es cURL.
Mira:
$handler2 = curl_init(‘http://www.tudominio.com/admin/import.php?entity=0’);
curl_setopt($handler2, CURLOPT_RETURNTRANSFER, true);
$response2 = curl_exec($handler2);
curl_close($handler2);
Este script lo que hace es cargar la página como si lo estuvieras haciendo en persona, asi que programando esto en el cron te solucionas el problema.
Saludos!
osvaldo says
hola a todos muchisimas gracias por este grandisimo aporte que han hecho en este blog,
en mi caso quisiera qu me pudiesen orientar un poco, trabajo con la version 1.5.4.1 y he visto ya el codigo totalmente desarrollado que aportais aunque no lo he probado,
mi pregunta es, si lo ejecuto con un CRON desde el servidor, hara todas la sfunciones una y otra vez, perdonad mi ignorancia pero estoy pez en programación y no entiendo nada de nada,
me gustaria aportar esto que he encontrado, es una funcion para hacer una llamada a la url de la web donde el proveedor nos da el fichero actualizado a diario,
y realmente lo que necesito es eso, para no descargarlo manualmente a diario,
como podemos mejorar el scrip para que solo actualice los campos de stock, cree las novedades, y desactive los productos que no hayan stcok a partir de la segunda importación.
navegando me encontre la funcion de llamada a la url sin tener la necesidad de hacerlo manual, es compatible con este scripth?
por favor necesito algo de ayuda.
function Conectarse() //Función para conectarse a la BD
{
if (!($link=mysql_connect(“localhost”,”miusuario”,”mipassword”))) { //Cambia estos datos
echo “Error conectando a la base de datos.”;
exit();
}
if (!mysql_select_db(“mibd”,$link)) {
echo “Error seleccionando la base de datos.”;
exit();
}
return $link;
}
gracias a todos
mundodigital says
Hola.
Llevo mucho tiempo buscando la forma de hacer esta tarea y he encontrado este valiosisimo post en el que hay que agradecer a su creador ( y a todos los comentaristas ) que han aportado sus conocimientos en programación para ayudar a la comunidad a poder realizar esta tarea.
Yo no tengo conocimientos en programación y no sé por donde empezar.
Tengo 3 ficheros en formato CSV de un proveedor , que estan alojados en un servidor FTP del cual tengo nombre de usuario y contraseña . Los ficheros son 3: Productos, Atributos y Categorias. Yo ya he hecho una primera importación manual de todos los ficheros desde la herramienta nativa de importacion de CSV de Prestashop, he creado las categorias y he importado todos los productos con sus imagenes y descripciones .
Pero para tener actualizado el catalogo de productos a diario tengo que hacer esta tarea diaria de forma manual. Tengo que descargar el fichero de productos y atributos del servidor FTP y subirlos a mi servidor e importalos a mi base de datos de Prestashop, todo de forma manual con el modulo que trae Prestashop de Importar archivos CSV , por lo que todo este proceso a diario se hace tedioso y lento.
Por este motivo necesito un script ( como al que se referencia en este post) para poder hacer este trabajo de forma automatica.
Descargar el fichero no es problema , mediante una tarea cron con wget puedo descargar el fichero del proveedor en mi servidor , aunque también me gustaria incorporar la descarga del fichero del proveedor de forma automatica.
Lo que realmente necesito es un script que pueda ejecutar la importación de productos, que pueda actualizar los precios de los productos , que pueda añadir productos nuevos y desactivar los productos que se han quedado sin stock o descatalogados .
Importaciónes Posteriores
Debemos de dejar todos los productos cuya fecha de creación o de
actualización sea posterior a la última en la que nosotros importamos la anterior vez. Por ejemplo si nosotros importamos la última vez el día 1 de Noviembre y queremos actualizar el día 2 del mismo mes, lo que haremos es filtrar todos aquellos cuya fecha sea posterior o mayor al 1 de Noviembre, tanto como creación, como actualización.
Esto lo puede hacer en Excel pero necesito hacerlo de forma automatizada.
Al importar teniendo ya contenidos en Prestashop, debemos tener en cuenta tanto
en productos como combinaciones no debemos sobreescribir la información ya
existente o se borrarán todos los datos.
Si tienes el conocimiento suficiente para poder hacer un script que ejecute estos procesos te necesito y escucharé tu oferta.
Un saludo.
Pedro says
Hola a todos. Respecto al script para la versión 1.5.4.1 he leído en algún post que lo ibáis a poner por aqui con todos los errores solucionados. Es que llevo varios meses intentando que funcione pero no lo he logrado. Sería de gran ayuda si alguno de vosotros publicara este script por aqui. Con agradecimiento anticipado recibir mis saludos. P.D: Y si puedo ayudaros en algo no dudéis en pedirmelo.
Adsoa says
Hola a todos.
Estoy utilizando este script para la version 1.5.5 y se presentan los siguientes errores:
1º – La primera vez en pasar un producto como “destacado” no me aparece en el Front Office.
2º – Cuando se lanza más de una vez este proceso, me elimina las imagenes de productos apareciendo un interrogante.
¿a alguien le pasa lo mismo?
Gracias, un saludo.
jaime says
Buenos Días; hemos creado nuestra base de datos en nuestro hosting.No tenemos problemas de espacio.No podemos continuar la instalación.Llega al 34% error rellenar base de datos.No sabemos porqué.Adjuntamos captura.Gracias por su orientación.Jaime Huerta
Cyx says
Muchas gracias por el aporte. Para el PS 1.5.4.1 He conseguido hacer que funcione….. si te descargas el fichero del cometario 145 | Carlos. Y vas leyendo, con los errores que van saliendo, al final se le hace funcionar. Bueno en mi caso solo era para los productos, y solo unos campos. Gracias a tod@s
Adsoa says
Necesito ayuda. Me aparece el error Fatal error: Código ISO no es correcto. Utilizo la version 1.5.6 y los ficheros csv están guardado en UTF8 ¿Alguna solución?
David says
Me aparece el error Fatal error: Código ISO no es correcto. Utilizo la version 1.5.6 y los ficheros csv están guardado en UTF8 ¿Alguna solución?
Mismo error que 167/Adsoa
Adsoa says
Hola David.
Encontré la solución. Simplemente tienes que introducir el parámetro con el codigo ISO del idioma en la llamada a la función POST. Es decir, añade ‘iso_lang’ => ‘es’, si tienes alguna duda contacta conmigo.
Un saludo.
Adsoa says
Ok, Gracias, parece que ahora si. 😉
Sergio says
Buenas. ¿Alguien puede ayudarme? El Script no me da ningun error. Tengo todos los depuradores tanto de PHP como de prestashop activados y nada. Uso actualmente la ultima version de prestashop. Esto es lo que tengo en el script:
image) && is_array($product->image) && count($product->image))
Añadid esto:
if(!is_array($product->image))
$product->image = explode(“,”,$product->image);
* Si “Fatal error: Cannot redeclare class…” comentar la linea //include_once ‘../controllers/admin/AdminImportController.php’;
–>
categoryImport();
break;
case 1:
loadProductsPost();
$import->productImport();
break;
case 2:
loadCombinacionesPost();
$import->attributeImport();
break;
case 5:
loadManufacturersPost();
$import->manufacturerImport();
break;
case 6:
loadSuppliersPost();
$import->supplierImport();
break;
default:
die();
break;
}
exit();
//window.location=”http:script.javascript.”;
function loadCategoriesPost()
{
$_POST = array (
‘tab’ => ‘AdminImport’,
‘skip’ => ‘1’,
‘csv’ => ‘categorias.csv’,
‘convert’ => ‘1’,
‘entity’ => ‘0’,
‘iso_lang’ => ‘es’,
‘separator’ => ‘|’,
‘multiple_value_separator’ => ”,
‘forceIDs’ => ‘0’,
‘import’ => ‘Importar datos CSV’,
‘type_value’ =>
array (
0 => ‘active’,
1 => ‘name’,
2 => ‘parent’,
3 => ‘image’,
/*4 => ‘root_category’,
4 => ‘is_root_category’,
5 => ‘description’,
6 => ‘meta_title’,
7 => ‘meta_keywords’,
8 => ‘meta_description’,
9 => ‘url_rewrite’,
9 => ‘link_rewrite’,
10 => ‘image’,
11 => ‘shop’,*/
),
);
}
function loadProductsPost() {
$_POST = array (
‘tab’ => ‘AdminImport’,
‘skip’ => ‘0’,
‘csv’ => ‘products_import.csv’,
‘convert’ => ‘1’,
‘entity’ => ‘1’,
‘separator’ => ‘;’,
‘multiple_value_separator’ => ‘,’,
‘forceIDs’ => ‘1’,
‘import’ => ‘Importar datos CSV’,
‘type_value’ =>
array (
0 => ‘id’,
1 => ‘active’,
2 => ‘name’,
3 => ‘category’,
4 => ‘price_tin’,
5 => ‘tax_rate’,
6 => ‘wholesale_price’,
7 => ‘on_sale’,
8 => ‘reduction_price’,
9 => ‘reduction_percent’,
10 => ‘reduction_from’,
11 => ‘reduction_to’,
12 => ‘reference’,
13 => ‘supplier_reference’,
14 => ‘supplier’,
15 => ‘manufacturer’,
16 => ‘ean13’,
17 => ‘upc’,
18 => ‘ecotax’,
19 => ‘weight’,
20 => ‘quantity’,
21 => ‘description_short’,
22 => ‘description’,
23 => ‘tags’,
24 => ‘meta_title’,
25 => ‘meta_keywords’,
26 => ‘meta_description’,
27 => ‘link_rewrite’,
28 => ‘available_now’,
29 => ‘available_later’,
30 => ‘available_for_order’,
31 => ‘date_add’,
32 => ‘show_price’,
33 => ‘image’,
34 => ‘delete_existing_images’,
35 => ‘features’,
36 => ‘enabled_internet’,
37 => ‘state’,
38 => ‘shop’,
),
);
}
function loadManufacturersPost() {
$_POST = array (
‘tab’ => ‘AdminImport’,
‘skip’ => ‘0’,
‘csv’ => ‘manufacturers_import.csv’,
‘convert’ => ‘1’,
‘entity’ => ‘5’,
‘separator’ => ‘;’,
‘multiple_value_separator’ => ‘,’,
‘forceIDs’ => ‘1’,
‘import’ => ‘Importar datos CSV’,
‘type_value’ =>
array (
0 => ‘id’,
1 => ‘active’,
2 => ‘name’,
3 => ‘description’,
4 => ‘short_description’,
5 => ‘meta_title’,
6 => ‘meta_keywords’,
7 => ‘meta_description’,
8 => ‘shop’,
),
);
}
function loadSuppliersPost() {
$_POST = array (
‘tab’ => ‘AdminImport’,
‘skip’ => ‘0’,
‘csv’ => ‘suppliers_import.csv’,
‘convert’ => ‘1’,
‘entity’ => ‘6’,
‘separator’ => ‘;’,
‘multiple_value_separator’ => ‘,’,
‘forceIDs’ => ‘1’,
‘import’ => ‘Importar datos CSV’,
‘type_value’ =>
array (
0 => ‘id’,
1 => ‘active’,
2 => ‘name’,
3 => ‘description’,
4 => ‘short_description’,
5 => ‘meta_title’,
6 => ‘meta_keywords’,
7 => ‘meta_description’,
8 => ‘shop’,
),
);
}
function loadCombinacionesPost() {
$numero = count($_POST);
$_POST = array (
‘tab’ => ‘AdminImport’,
‘skip’ => ‘1’,
‘csv’ => ‘combinaciones.csv’,
‘convert’ => ”,
‘entity’ => ‘2’,
‘separator’ => ‘;’,
‘multiple_value_separator’ => ‘,’,
‘import’ => ‘Importar datos CSV’,
‘u’ => ”,
‘type_value’ =>
array (
0 => ‘id_product’,
1 => ‘group’,
2 => ‘attribute’,
),
);
}
?>
Gracias.
Un saludo.
Adsoa says
Hola a todos.
He incluido en mi importador para prestashop 1.5.6.0 la opción de Fabricantes (Manufacturers), pero al ejecutarlos no importa nada, ni siquiera en el propio importador de CSV de prestashop.
¿A alguien le ocurre lo mismo?
Gracias.
Sergio says
A mi me ocurre lo mismo pero con las categorias. No me importa nada y no me lanza ningun error.
David says
El proceso de importación con csv se hace eterno… he leido que alguien habia desarrollado lo mismo pero atacando la BBDD.
Está ese script pare descargar?
Otra cosa, si quiero actualizar algunos datos (stock, etc), hay alguna manera de hacerlo con el import en csv sin tener que subir todo de nuevo?
Rubén says
Hola. Alguien tiene alguna versión final, corregido el tema de las imagenes¿? a mi el script solo me marca loading.gif y no hace mas.
Saludos
pepinca says
Saludos estoy atacando el post, veo que hay 175 comentarios. ¿Se actualiza el post o es DEAD?
Buen fin de semana desde Mallorca Islas Baleares
admin says
Hola,
tengo pendiente subir una versión del código mejorada y compatible con la versión 1.5 de Prestashop.
Espero tenerla esta semana.
Saludos,
@vigoncas
Saiyan says
Buenas,
Estoy con la versión 1.5.6 de Prestashop. Estoy intentando importar categorías (por empezar con algo sencillo). Corrigiendo cosillas he llegado hasta el error “Fatal error: Código ISO no es correcto. ” que lo he solucionado gracias a Adsoa en el post 169.
Ahora no da ningún error pero no hace nada. Veo que el Post sigue activo y a la espera de una actualización así que a ver si ahí tengo la solución.
Gracias
Saiyan says
Estoy observando que se para en líneas del tipo AdminImportController::XXXXX(); como por ejemplo en el método “openCsvFile()”: AdminImportController::rewindBomAware($handle);
Si lo comento continúa, pero luego vuelve a la función categoryImport() y pasa lo mismo con:
AdminImportController::setLocale(); y
$info = AdminImportController::getMaskedRow($line);
¿Qué hago mal?
Gracias
mario carlomagno says
Gente ya no sufran, este es el script para la ultima version, me dicen si todo fue bien:
categoryImport();
break;
case 1:
loadProductsPost();
$import->productImport();
break;
}
function loadCategoriesPost() {
$_POST = array (
‘tab’ => ‘AdminImport’,
‘skip’ => ‘1’,
‘csv’ => ‘20131209133157-categoria2.csv’,
‘convert’ => ”,
‘entity’ => ‘0’,
‘separator’ => ‘;’,
‘multiple_value_separator’ => ‘,’,
‘import’ => ‘1’,
‘iso_lang’ => ‘es’,
‘forceIDs’ => ‘1’,
‘type_value’ =>
array (
0 => ‘id’,
1 => ‘active’,
2 => ‘name’,
3 => ‘parent’,
4 => ‘is_root_category’,
5 => ‘description’,
6 => ‘meta_title’,
7 => ‘meta_keywords’,
8 => ‘meta_description’,
9 => ‘link_rewrite’,
10 => ‘image’,
11 => ‘shop’
),
);
}
function loadProductsPost() {
$_POST = array (
‘tab’ => ‘AdminImport’,
‘skip’ => ‘1’,
‘csv’ => ‘20131210093530-productos2.csv’,
‘convert’ => ‘on’,
‘regenerate’ => ”,
‘entity’ => ‘1’,
‘iso_lang’ => ‘es’,
‘match_ref’ => ‘1’,
‘separator’ => ‘;’,
‘multiple_value_separator’ => ‘,’,
‘import’ => ‘1’,
‘type_value’ =>
array (
0 => ‘id’,
1 => ‘active’,
2 => ‘name’,
3 => ‘category’,
4 => ‘price_tex’,
5 => ‘id_tax_rules_group’,
6 => ‘wholesale_price’,
7 => ‘on_sale’,
8 => ‘reduction_price’,
9 => ‘reduction_percent’,
10 => ‘reduction_from’,
11 => ‘reduction_to’,
12 => ‘reference’,
13 => ‘supplier_reference’,
14 => ‘supplier’,
15 => ‘manufacturer’,
16 => ‘ean13’,
17 => ‘upc’,
18 => ‘ecotax’,
19 => ‘width’,
20 => ‘height’,
21 => ‘depth’,
22 => ‘weight’,
23 => ‘quantity’,
24 => ‘minimal_quantity’,
25 => ‘visibility’,
26 => ‘additional_shipping_cost’,
27 => ‘unity’,
28 => ‘unit_price_ratio’,
29 => ‘description_short’,
30 => ‘description’,
31 => ‘tags’,
32 => ‘meta_title’,
33 => ‘meta_keywords’,
34 => ‘meta_description’,
35 => ‘link_rewrite’,
36 => ‘available_now’,
37 => ‘available_later’,
38 => ‘available_for_order’,
39 => ‘available_date’,
40 => ‘date_add’,
41 => ‘show_price’,
42 => ‘image’,
43 => ‘delete_existing_images’,
44 => ‘features’,
45 => ‘online_only’,
46 => ‘condition’,
47 => ‘customizable’,
48 => ‘uploadable_files’,
49 => ‘text_fields’,
50 => ‘out_of_stock’,
51 => ‘advanced_stock_management’,
52 => ‘shop’
),
);
}
mario carlomagno says
No se pq se corto una parte, a ver ahora:
categoryImport();
break;
case 1:
loadProductsPost();
$import->productImport();
break;
}
function loadCategoriesPost() {
$_POST = array (
‘tab’ => ‘AdminImport’,
‘skip’ => ‘1’,
‘csv’ => ‘20131209133157-categoria2.csv’,
‘convert’ => ”,
‘entity’ => ‘0’,
‘separator’ => ‘;’,
‘multiple_value_separator’ => ‘,’,
‘import’ => ‘1’,
‘iso_lang’ => ‘es’,
‘forceIDs’ => ‘1’,
‘type_value’ =>
array (
0 => ‘id’,
1 => ‘active’,
2 => ‘name’,
3 => ‘parent’,
4 => ‘is_root_category’,
5 => ‘description’,
6 => ‘meta_title’,
7 => ‘meta_keywords’,
8 => ‘meta_description’,
9 => ‘link_rewrite’,
10 => ‘image’,
11 => ‘shop’
),
);
}
function loadProductsPost() {
$_POST = array (
‘tab’ => ‘AdminImport’,
‘skip’ => ‘1’,
‘csv’ => ‘20131210093530-productos2.csv’,
‘convert’ => ‘on’,
‘regenerate’ => ”,
‘entity’ => ‘1’,
‘iso_lang’ => ‘es’,
‘match_ref’ => ‘1’,
‘separator’ => ‘;’,
‘multiple_value_separator’ => ‘,’,
‘import’ => ‘1’,
‘type_value’ =>
array (
0 => ‘id’,
1 => ‘active’,
2 => ‘name’,
3 => ‘category’,
4 => ‘price_tex’,
5 => ‘id_tax_rules_group’,
6 => ‘wholesale_price’,
7 => ‘on_sale’,
8 => ‘reduction_price’,
9 => ‘reduction_percent’,
10 => ‘reduction_from’,
11 => ‘reduction_to’,
12 => ‘reference’,
13 => ‘supplier_reference’,
14 => ‘supplier’,
15 => ‘manufacturer’,
16 => ‘ean13’,
17 => ‘upc’,
18 => ‘ecotax’,
19 => ‘width’,
20 => ‘height’,
21 => ‘depth’,
22 => ‘weight’,
23 => ‘quantity’,
24 => ‘minimal_quantity’,
25 => ‘visibility’,
26 => ‘additional_shipping_cost’,
27 => ‘unity’,
28 => ‘unit_price_ratio’,
29 => ‘description_short’,
30 => ‘description’,
31 => ‘tags’,
32 => ‘meta_title’,
33 => ‘meta_keywords’,
34 => ‘meta_description’,
35 => ‘link_rewrite’,
36 => ‘available_now’,
37 => ‘available_later’,
38 => ‘available_for_order’,
39 => ‘available_date’,
40 => ‘date_add’,
41 => ‘show_price’,
42 => ‘image’,
43 => ‘delete_existing_images’,
44 => ‘features’,
45 => ‘online_only’,
46 => ‘condition’,
47 => ‘customizable’,
48 => ‘uploadable_files’,
49 => ‘text_fields’,
50 => ‘out_of_stock’,
51 => ‘advanced_stock_management’,
52 => ‘shop’
),
);
}
mario carlomagno says
parte1:
categoryImport();
break;
case 1:
loadProductsPost();
$import->productImport();
break;
}
mario carlomagno says
que shit:
aqui esta:
https://docs.google.com/document/d/1jeJ2d1W2ZAXiwqdwvP4fz_z7Nh7f7z7_eoPueNValVk/edit?usp=sharing
juanmicastillo says
Buenas, estoy trabajando con el script, ¿Como puedo saber si funciona bien?, cuando lo subo en un archivo php, lo ejecuto se muestra la págona en blanco.
Saludos y muchas gracias por compartir
juanmicastillo says
Ya he conseguido hacerlo funcionar, pero no me recoge bien los datos, ¿sabéis donde conseguir la llamada de cada método en prestashop?
¡Muchas gracias a todos lo que habéis compartido este script!
Se agradece el enfuerzo
juanmicastillo says
Ya he conseguido que funcione bien el importar las categorías.
modificando function loadCategoriesPost() {
$_POST = array (
‘tab’ => ‘AdminImport’,
‘skip’ => ‘1’,
‘csv’ => ‘categoria.csv’,
‘convert’ => ‘on’,
‘regenerate’ => ”,
‘entity’ => ‘0’,
‘iso_lang’ => ‘es’,
‘separator’ => ‘;’,
‘multiple_value_separator’ => ‘,’,
‘import’ => ‘1’,
‘forceIDs’ => ‘0’,
‘type_value’ =>
Ahora el problema que tengo que cada vez que importo los productos, me duplica las imágenes, y se que puedo agregar en el csv un campo para que elimine las imágenes anteriores, ahora no ¿es posible hacerlo desde el mismo script?