Tworząc import produktów do Prestashop znajdziemy wiele przykładów jak wykonać to do pojedynczego sklepu, jednak kiedy musimy zaimportować produkty do sklepu z włączoną opcja multistore nieco trudniej o materiały. Kolejnym problemem w sklepie z włączoną opcja 'wielosklepu' jest inne działanie, lub brak oczekiwanego działania, wielu wbudowanych metod.
Kilka przydatnych informacji które mogą ułatwić dodawanei produktów do sklepu z właczonym "multistorem":
Aktualizacja produktu /update/ :
$product = new Product($r->id_product); $product->name = array((int)(Configuration::get('PS_LANG_DEFAULT')) => 'nazwaproduktu')); // dodanie nazwy w domyślnym języku sklepu $product->save(); //pobranie ID sklepow $id_shop_list=array(); foreach(Shop::getShops() as $s) $id_shop_list[]=$s["id_shop"]; // teraz możemy utworzyć kopię tego produktu na kolejne sklepy w zakresie multistora z np. innymi cenami na każdy ze sklepów foreach ($id_shop_list as $sh) { Shop::setContext(Shop::CONTEXT_SHOP,$sh); $product->price = $price; //cena w sklepie o ID zawartym w $sh $product->save(); }
Dodanie zdjęc do produktów:
$image = new Image(); $image->id_product = $product->id; $image->position = Image::getHighestPosition($product->id) + 1; $image->cover = 1; // true jeżeli obrz ma być okładką, domyślnym obrazem lub brak false jeżeli nie if ( $image->add()) { $image->associateTo($id_shop_list); //funkcja copyimg pochodzi z kontrolera AdminImportController kopiuje obraz z podanego url-a do produktu i skaluje w odpowiednie rozmiary if (!copyImg($product->id, $image->id, [url_do_pliku_z_obrazem], 'products', true)) { $image->delete(); } }
Ustawianie stanów magazynowych dla kombinacji atrybutów:
foreach ($id_shop_list as $sh) { StockAvailable::setQuantity((int)$product->id, $id_product_attribute, [qty], (int)$sh); }