PHP

Чтение XML файла Яндекс Маркета в PHP

Если требуется сделать импорт или обновление товаров по XML файлу Яндекс Маркета, можно применить расширении PHP Simplexml. Эта библиотека довольно быстрая и работает с большими файлами. О структуре xml файла можно ознакомиться в разделе помощи Яндекса.

1

Сохранение файла на сервер и его чтение

$ch = curl_init('http://site.com/market.xml');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$html = curl_exec($ch);
curl_close($ch);
file_put_contents(__DIR__ . '/file.xml', $html);

$data = simplexml_load_file(__DIR__ . '/file.xml');

Если файл под паролем, нужно добавить авторизацию:

curl_setopt($ch, CURLOPT_USERPWD, 'логин:пароль');
2

Информация о магазине

Корневой раздел shop содержит информацию о магазине и другие разделы.
https://yandex.ru/support/partnermarket/elements/shop.html

// Дата и время генерации YML-файла.
echo strval($data['date']);

// name - короткое название магазина.
echo strval($data->shop->name);

// company - полное наименование компании.
echo strval($data->shop->company);

// url - URL главной страницы магазина.
echo strval($data->shop->url);
3

Список курсов валют

Элемент currencies содержит список валют магазина.
https://yandex.ru/support/partnermarket/currencies.html

<currencies>
    <currency id="RUR" rate="1"/>
    <currency id="USD" rate="60"/>
</currencies>
foreach ($data->shop->currencies->currency as $row) {
    $id   = strval($row['id']);
    $rate = strval($row['rate']);
    
    var_dump($id, $rate);
}
4

Категории

Блок категорий из представляет собой список, атрибут parentId указывает ID родительской категории.
https://yandex.ru/support/partnermarket/categories.html

<categories>
    <category id="1" parentId="0">Лоты для творчества</category>
    <category id="2" parentId="1">Картон</category>
    <category id="3" parentId="1">Трафареты</category>
</categories>
foreach ($data->shop->categories->category as $row) {
    $id = intval($row['id']);
    $parent = intval($row['parentId']);
    $name = strval($row);
    
    var_dump($id, $parent, $name);
}
5

Товары

В примере показаны только часто используемые элементы,
о всех элементах на https://yandex.ru/support/partnermarket/offers.html

<offer id="123" available="true">
    <url>http://site.com/product/123</url>
    <price>5000</price>
    <oldprice>6000</oldprice>
    <currencyId>RUR</currencyId>
    <categoryId>3</categoryId>
    <name>Краска с экстра блеском "Mystik ink"</name>    
    <vendor>Brand</vendor>
    <picture>http://site.com/img/123.jpg</picture>
    <description>Краска на основе сольвента идеально подходят для стекла</description>
</offer>
foreach ($data->shop->offers->offer as $row) {
    // id - идентификатор предложения.
    $id = intval($row['id']);
    
    // available - статус товара «в наличии» / «на заказ».
    $available = intval($row['available']);
    
    // url - URL страницы товара на сайте магазина. 
    $url = strval($row->url);
    
    // price - актуальная цена.
    $price = strval($row->price);    
    
    // oldprice - старая цена.
    $oldprice = strval($row->oldprice);    
    
    // currencyId - валюта.
    $currencyId = strval($row->currencyId);
    
    // currencyId - идентификатор категории товара.
    $categoryId = intval($row->categoryId);
    
    // name - название товара.
    $name = strval($row->name);        
    
    // vendor - название производителя.
    $vendor = strval($row->vendor);    
    
    // picture - изображение.
    $picture = strval($row->picture);
    
    // description - описание.
    $description = strval($row->description);
}
01 июня 2018
В последнее время письма отправляемые с хостингов через функции mail() и mb_send_mail() часто попадают или совсем не...
cURL PHP – это библиотека предназначенная для получения и передачи данных через такие протоколы, как HTTP, FTP, HTTPS....
В статье приведены основные примеры работы с расширением PHP PDO. Такие как подключение к БД, получение, изменение и...
Библиотека GD дает возможность работать с изображениями в PHP. Далее представлены примеры как изменить размер, вырезать...