Jump to content

Añadir productos .xml por Webservice


GeoPixel

Recommended Posts

Buenos días,

Estoy trabajando con las diferentes maneras que hay de cargar productos en PrestaShop.

Estoy viendo que es posible añadir productos mediante WebService.

Actualmente tengo un archivo .xml con los productos a añadir, pero no se como hacer para cargarlos a la WebService y que se usen.

He encontrado este ejemplo para añadir un solo producto, pero en mi caso quiero añadir un listado que se encuentra en un xml.

 

ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(-1);
    define('PS_SHOP_PATH', 'http://prestashop.devel/');
    define('PS_WS_AUTH_KEY', 'UUFZZXMRDWMALYJ4JIGL34M8IA7BB4I9');
    require_once('PSWebServiceLibrary.php');

    try {
        $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);
        $opt = array('resource' => 'products');

        $xml = $webService->get(array('url' => PS_SHOP_PATH . '/api/products?schema=synopsis'));
        $resources = $xml->children()->children();

        unset($resources->position_in_category);
        unset($resources->manufacturer_name);

        $resources->price = '1000';
        $resources->active = '1';
        $resources->quantity = '50';
        $resources->link_rewrite = 'blabla';
        $resources->name->language[0][0] = 'blabla';
        $resources->description->language[0][0] = '<p>blabla</p>';
        $resources->description_short->language[0][0] = 'blabla';
        $resources->associations = '';

        $opt = array('resource' => 'products');
        $opt['postXml'] = $xml->asXML();
        $xml = $webService->add($opt);
    } catch (PrestaShopWebserviceException $ex) {
        echo 'Other error: <br/>' . $ex->getMessage();
    }

Que debería hacer para poder cargar el archivo?

Link to comment
Share on other sites

Hola, Geopixel.

Lo que quieres hacer requiere conocimientos de programación. Se puede hacer de varias formas, bien en el propio Prestashop, creando un módulo, o bien de forma externa, como en el ejemplo que planteas.

Básicamente lo que tienes que hacer, en cualquiera de los dos casos, es "recibir" el archivo XML (si lo envías desde otro sitio podrías usar una petición POST para enviarlo), luego abrirlo, cargar los productos, procesarlos y usar un código parecido al que tienes para irlos cargando uno a uno mediante el webservice u otro método.

Como digo, esto se puede hacer a partir de un script PHP que tú crees y subas a tu servidor, o bien creando un módulo para Prestashop, con un controlador para recibir los envíos de archivos y luego unas clases para procesarlos e importarlos en la tienda.

Ten en cuenta que el código que pones de ejemplo es eso, un ejemplo esquemático. Luego te encuentras con bastante más cuestiones con las que tienes que lidiar, como el gestionar las imágenes para los productos (¿cómo las envías? ¿dónde están alojadas? ¿se puede acceder a ellas desde el servidor?), o categorías, marcas o proveedores que no existen y hay que crear "sobre la marcha".

Yo te recomendaría que echases un vistazo al código que utiliza el importador de Prestashop. Está en /controllers/admin/AdminImportController.php

Edited by Prestafan33 (see edit history)
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...