Actualizado el domingo, 19 junio, 2016
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. 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.
En la parte del cliente programamos un script que exportamos en formato CSV, esperado por Prestashop, tanto las categorías como los productos -en este caso lo único que necesitamos 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 comentaremos 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.
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.
<!--?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', ), ); } ?>
Muy buen post y demasiado útil pero funciona en la versión 1.6? aunado a eso quisiera saber si hay forma de que suba varios CSV de productos