[Prestashop] Dodanie produktu w multistore z poziomu php

  • Start
  • Blog
  • [Prestashop] Dodanie produktu w multistore z poziomu php
22-02-2018

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

 

Poprzedni wpis Nastepny wpis