Создание элементов
Для создания любого элемента структуры магазина (далее возьмем для примера товар) нам сначала необходимо получить заготовку XML документа. Для этого к ссылке списка товаров необходимо дописать ?schema=synopsis. Ниже приведен пример создания товара через класс PSWebServiceLibrary:
Код:
//Создаем обьект класса указав url магазина и созданный секретный ключ из админки
$webService = new PrestaShopWebservice($shop_url, $secret_key, $debug);
//Обратите внимание, метод products без ?schema=synopsis выводит список товаров
$xml_product = $webService->get(array('resource' => 'products?schema=synopsis'));
//После получения заготовки заполняем поля XML
$resources_product = $new_product->children()->children();
$resources_product->name->language[0][0] = "Test product";
$resources_product->link_rewrite->language[0][0] = "tstproduct";
$resources_product->active = 1;
$resources_product->available_for_order = 1;
$resources_product->show_price = 1;
$resources_product->out_of_stock = 2;//Если товара нет на складе, действие по умолчанию
//Если не указать категорию, товар не будет виден в админке, это важно
$resources_product->associations->categories->category[0]->id = 1;
//Отправляем заполненную заготовку на добавление
$created_product = $webService->add(array('resource' => 'products', 'postXml' => $new_product->asXML()));
В переменной $created_product у нас оказывается XML карточка товара в случае успеха, или карточка с описанием ошибки. Это утверждение верно для создания любых элементов кроме картинок.
Если просмотреть дебаг вывод то можно увидеть что класс лезет за заготовкой по адресу
Для просмотра ссылки Войди или Зарегистрируйся методом GET а добавляет товар методом POST по адресу
Для просмотра ссылки Войди или Зарегистрируйся.
Редактирование элементов
Редактирование происходит практически так же как и создание, за исключением того что вначале мы получаем не заготовку карточки товара, а сам товар. После модификации полей мы просто меняем метод класса PSWebServiceLibrary с add на edit с такими же параметрами.
Код:
$product = $webService->get(array('resource' => 'products', 'id' => $product_id));
$mod_product = $webService->edit(array('resource' => 'products', 'id' => $product_id, 'putXml' => $product->asXML()));