
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);
}