PrestaShop WebService - обновление цен на различные продукты

0

У меня есть это, чтобы обновить цену PrestaShop за один продукт с помощью WebService.

    <html><head><title>CRUD Data Transfer - Update example</title></head><body>
<?php
// Here we define constants /!\ You need to replace this parameters
define('DEBUG', true);
define('PS_SHOP_PATH', 'https://my.domain.com');
define('ID_PRODUCT', 1);
define('PS_WS_AUTH_KEY', 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX');
require_once('./PSWebServiceLibrary.php');
@ini_set('display_errors', 'on');
try
{
$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);
$opt = array('resource' => 'products');
$opt['id']=ID_PRODUCT;
$xml = $webService->get($opt);
echo "Successfully recived data.";
     /* List of nodes that can't modify
     *
     *  - "manufacturer_name"
     *  - "position_in_category"
     *  - "quantity"
     *  - "type"
     */
    unset($xml->children()->children()->manufacturer_name);
    unset($xml->children()->children()->position_in_category);
    unset($xml->children()->children()->quantity);
    unset($xml->children()->children()->type);
   $xml->children()->children()->price = 111.0; // <-- new price!
//Load new data to query generator
$opt['putXml']=$xml->asXML();
$xml = $webService->edit($opt);
// if WebService don't throw an exception the action worked well and we don't show the following message
echo "Successfully updated.";
}
catch (PrestaShopWebserviceException $ex)
{
// Here we are dealing with errors
$trace = $ex->getTrace();
if ($trace[0]['args'][0] == 404) echo 'Bad ID';
else if ($trace[0]['args'][0] == 401) echo 'Bad auth key';
else echo 'Other error<br />'.$ex->getMessage();
}

?>
</body></html>

Как я могу сделать то же самое, но для всех продуктов в таблице MySQL?

У меня есть все продукты в таблице MySQL с идентификационным ключом как Source_ID.

Цените любую помощь!

С уважением

Теги:
web-services
prestashop-1.6
prestashop

1 ответ

0

Вам нужно будет получить данные о продукте для каждого продукта, обновить его и сохранить. Попробуйте что-то вроде этого:

<html><head><title>CRUD Data Transfer - Update example</title></head><body>
<?php
// Here we define constants /!\ You need to replace this parameters
define('DEBUG', true);
define('PS_SHOP_PATH', 'http://my.domain.com');
define('PS_WS_AUTH_KEY', 'XXXXXXXXXXXXXXXXXXXXXXXXX');
require_once('PSWebServiceLibrary.php');
@ini_set('display_errors', 'on');

try {
    $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);

    // Get products from your database via a query
    $products = array(array('id' => 1, 'price' => 1.5,), array('id' => 2, 'price' => 2.95));

    // Loop through products
    foreach ($products as $product) {

        $opt = array('resource' => 'products', 'id' => $product['id']);

        // Call webservice to get product data
        $xml = $webService->get($opt);

        // Remove nodes that can't be modified
        unset($xml->children()->children()->manufacturer_name);
        unset($xml->children()->children()->position_in_category);
        unset($xml->children()->children()->quantity);
        unset($xml->children()->children()->type);

        // Update product data
        $xml->children()->children()->price = $product['price']; // <-- new price!

        // Load new data to query generator        
        $opt['putXml'] = $xml->asXML();

        // Save product
        $xml = $webService->edit($opt);
        // if WebService don't throw an exception the action worked well and we don't show the following message
    }
} catch (PrestaShopWebserviceException $ex) {
    // Here we are dealing with errors
    $trace = $ex->getTrace();
    if ($trace[0]['args'][0] == 404)
        echo 'Bad ID';
    else if ($trace[0]['args'][0] == 401)
        echo 'Bad auth key';
    else
        echo 'Other error<br />' . $ex->getMessage();
}
?>
</body></html>

Надеюсь это поможет!

  • 0
    Спасибо за вашу помощь! На данный момент я попробовал с вашим, но он обновляет только первый продукт: 'id' => 1, 'price' => 1.5 Другой не обновляется. :(
  • 0
    О, это печально :-( Вы получаете ошибку при обновлении? Есть ли продукт с идентификатором 2 на самом деле в вашем магазине?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню