En esta entrada vamos a ver como añadir productos a tu tienda online hecha con Prestashop, la versión para lo que corre bien es 1.6 y 1.7, no he probado en más versiones así que es posible que tengas que realizar algunos ajustes si te sales de estas versiones.
La idea es que recibas los productos desde algun servicio web y después modifiques las variables a tu gusto, subas o bajes los precios, cambies los titulos, las descripciones o lo que quieras. Esto ya queda a tu gusto.
Esto sería así, creamos la instancia $object , qué será un objeto tipo Product, y le añadiremos los atributos necesarios para poder “volcar” el producto a tu tienda.
Los atributos son fáciles de entender, os dejo un ejemplo de como lo he subido yo. Aunque es obvio que tendrás que cambiarlo por los datos que tu quieras.
Las variables que encuentres a la derecha $ean13, $referencia… … previamente las he asignado el valor que quiero que tengan.
ean13 = $ean13; name =array((int)(Configuration::get('PS_LANG_DEFAULT')) => $name); id_manufacturer = $numero; sku = $referencia; reference = $referencia; quantity = 0; minimal_quantity = 1; additional_shipping_cost = 0; wholesale_price = 0; ecotax = 0; width = 0; height = 0; depth = 0; weight = 0; out_of_stock = 0; active = 0; id_category_default = (int)$numeroC; category = (Array)((int)$numeroC); available_for_order = 0; show_price = 1; on_sale = 0; online_only = 1; meta_keywords = $name; link_rewrite = array((int)(Configuration::get('PS_LANG_DEFAULT')) => $referencia);// description_short = array((int)(Configuration::get('PS_LANG_DEFAULT')) => $name); description = array((int)(Configuration::get('PS_LANG_DEFAULT')) => $name.'
'. $description;
Y este sería el ejemplo completo para poder subir productos “por código“:
$defaultLanguage = new Language((int)(Configuration::get('PS_LANG_DEFAULT'))); /* Añadiendo un nuevo producto */ $object = new Product(); $object->price = 1000; $object->id_tax_rules_group = 0; $object->ean13 = $ean13; $object->name =array((int)(Configuration::get('PS_LANG_DEFAULT')) => $name); $object->id_manufacturer = $numero; $object->sku = $referencia; $object->reference = $referencia; $object->quantity = 0; $object->minimal_quantity = 1; $object->additional_shipping_cost = 0; $object->wholesale_price = 0; $object->ecotax = 0; $object->width = 0; $object->height = 0; $object->depth = 0; $object->weight = 0; $object->out_of_stock = 0; $object->active = 0; $object->id_category_default = (int)$numeroC; $object->category = (Array)((int)$numeroC); $object->available_for_order = 0; $object->show_price = 1; $object->on_sale = 0; $object->online_only = 1; $object->meta_keywords = $name; $object->link_rewrite = array((int)(Configuration::get('PS_LANG_DEFAULT')) => $referencia);//notincludes $object->description_short = array((int)(Configuration::get('PS_LANG_DEFAULT')) => $name); $object->description = array((int)(Configuration::get('PS_LANG_DEFAULT')) => $name.'<br><h3>'.$attribute.'</h3><br><h3>Incluye:</h3><br>'.$includes.'<br> <h3>No Incluye:</h3><br>'.$notincludes.'<br>'); $object->save(); //Añade una imagen principal $id_product = $object->id; echo '<br>id_product:'.$id_product .'<br>'; $url = 'http://donde-esta-la-imagen.com/img/'.$imagenReferencia.'.jpg'; echo '<br>imagen:'.$url .'<br>';// traza para ver la ruta e imagen $shops = Shop::getShops(true, null, true); $image = new Image(); $image->id_product = $id_product; $image->position = Image::getHighestPosition($id_product) + 1; $image->cover = true; // or false; if (($image->validateFields(false, true)) === true && ($image->validateFieldsLang(false, true)) === true && $image->add()) { $image->associateTo($shops); if (!AdminImportController::copyImg($id_product, $image->id, $url, 'products', false)) { echo '<br>Borrando!'; //Si quieres borrar la imagen después $image->delete(); } } // Añade una categoría Principal $object->id_category_default = (int)$numeroC; $object->category = (Array)((int)$numeroC); $object->addToCategories(array($numeroC,2)); $object->save(); |
He hecho un save() varías veces porque para poder asignar una imagen principal y una categoría principal el producto tiene que estar salvado previamente, es por ello que añado el producto con un save() y después añado el resto de parámetros que quiero añadir a ese producto.
Y voilá! listo, añadido tu producto a tu flamante tienda Prestashop.