rferrero Posted October 21, 2010 Share Posted October 21, 2010 Hola, tengo un script que genera un fichero cvs con los productos a subir a la web, este cvs se carga perfectamente desde el BO Importar->Productos las imagenes se suben perfectamente ytodo está ok, el problema es cuando lanzo el cvs con el script de abajo, los productos cargan bien pero la imagen nosube.A que se puede deber?Un salusoUrl del script: http://programadorphp.es/script-para-importar-productos-y-categorias-en-prestashop<?phpdefine('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', 30 => 'link_rewrite', ), );}?> Link to comment Share on other sites More sharing options...
rferrero Posted October 25, 2010 Author Share Posted October 25, 2010 Alguna idea de lo que está pasando??? Link to comment Share on other sites More sharing options...
seog Posted October 25, 2010 Share Posted October 25, 2010 No puedo ayudarte porque mis conocimientos no dan para tanto pero debo decirte que es una pasada los scripts que te curras, ¿Con ese mismo script que indicas en tu web es posible que solo se actualicen los productos de tarifas csv que tengan el mismo numero de referencia de proveedor que le asignaste a tus articulos en el BO descartando el resto de productos en vez de que se creen nuevos?saludos Link to comment Share on other sites More sharing options...
rferrero Posted October 26, 2010 Author Share Posted October 26, 2010 Hola, con este script se crean nuevos productos, antes de lanzar el Import lo que hago es verificar si existe el producto para actualizarlo y si no existe lo envío al cvs para que se lea con el loadProductsPost(); $import->productImport();Para actualizar los que ya existen hago algo como esto: LA VARIABLE $art es leida de un xml que contiene los datos de cada producto que sincronizo, la cargo con simpleloadxml if ($art->ELIMINAR==1)//Si está a 1 lo desactivamos { $qry = "UPDATE ps_product SET ". "quantity = $cantidad, ". "price = $art->PVP, ". "reduction_percent= $art->DESCUENTO, ". "active = 0 ". " WHERE supplier_reference = '$art[ref]'"; } else { $qry = "UPDATE ps_product SET ". "quantity = $art->EXISTENCIAS, ". "price = $art->PVP, ". "reduction_percent= $art->DESCUENTO, ". "active = 1 ". " WHERE supplier_reference = '$art[ref]'"; } $result = mysql_query($qry) or die(mysql_error()); } Link to comment Share on other sites More sharing options...
rferrero Posted October 27, 2010 Author Share Posted October 27, 2010 Problema solucionado!!! En el php AdminImport.php línea 718 se supone que $product->Image es un array, si ejecutamos la importación desde fuera del bo (no es un array) por lo que modifico el código /*if (isset($product->image) AND is_array($product->image) and sizeof($product->image))*/ if (isset($product->image) AND sizeof($product->image)) { $productHasImages = (bool)Image::getImages(3, intval($product->id)); /*$productHasImages = (bool)Image::getImages(intval($cookie->id_lang), intval($product->id)); foreach ($product->image AS $key => $url)*/ $url=$product->image; if (!empty($url)) {De esta forma solo podremos importar una foto, no una lista de fotos aunque a mi me basta, supongo que con una lista si que funcionaria. Link to comment Share on other sites More sharing options...
d888sp4 Posted November 21, 2010 Share Posted November 21, 2010 Hola a todos,felicidades por hacer este script. Lo necesitamos!Soy un principiante a PHP: ¿cómo puedo usar este script (http url)? ¿Cómo se escribe el comando para insertarlo en cron?Me dio algunos ejemplos?Gracias.Carlo Alberto.PD: lo siento mi mal español, pero soy italiano y utiliza traductor de Google ... Link to comment Share on other sites More sharing options...
rferrero Posted December 1, 2010 Author Share Posted December 1, 2010 bastaría con programar el cron para que se ejecute cada x minutos Para ejecutarlo desde http solo tienes que irte a la carpeta del server donde tienes el phphttp://www.tu_dominio.com/carpeta_admin/nombrephp.phpel comando para cron es php /home/ruta_del_php/nombrephp.php > log.txt, si tienes un hosting con cpanel es mucho mas facil Apartado Avanzado-->Cron jobsMetes los minutos */15 por ejemplo y la instrucción php /home/ruta_del_php/nombrephp.php > log.txtEspero serte de ayudaUn saludo Link to comment Share on other sites More sharing options...
Recommended Posts