Пример генерации XML-фида для Google Merchant на PHP с минимальным набором обязательных полей.
Описание формата: https://support.google.com/merchants/answer/7052112
Код файла merchant.php
<?php
// Подключение к БД
$dbh = new PDO('mysql:dbname=db_name;host=localhost', 'ЛОГИН', 'ПАРОЛЬ');
$out = '<?xml version="1.0" encoding="utf-8"?>' . "\r\n";
$out .= '<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">' . "\r\n";
$out .= '<channel>' . "\r\n";
// Название магазина
$out .= '<title>Рога и копыта</title>' . "\r\n";
// Описание магазина
$out .= '<description>Магазин по продаже...</description>' . "\r\n";
// URL главной страницы магазина
$out .= '<link>https://example.com/</link>' . "\r\n";
// Вывод товаров
$sth = $dbh->prepare("SELECT * FROM `prods`");
$sth->execute();
$prods = $sth->fetchAll(PDO::FETCH_ASSOC);
foreach ($prods as $row) {
$out .= '<item>' . "\r\n";
// ID товара
$out .= '<g:id>' . $row['id'] . '</g:id>' . "\r\n";
// Название товара
$out .= '<title>' . $row['name'] . '</title>' . "\r\n";
// URL страницы товара на сайте магазина
$out .= '<link>https://example.com/prod/' . $row['id'] . '.html</link>' . "\r\n";
// Описание товара
$out .= '<g:description><![CDATA['. htmlspecialchars($row['text']) . ']]></g:description>' . "\r\n";
// Цена
$out .= '<g:price>' . $row['price'] . '.00 RUB</g:price>' . "\r\n";
// Цена со скидкой
$out .= '<g:sale_price>' . $row['price'] . ' . 00 RUB</g:sale_price>' . "\r\n";
// Изображения товара
$out .= '<g:image_link>https://example.com/img/1.jpg</g:image_link>' . "\r\n";
$out .= '<g:image_link>https://example.com/img/2.jpg</g:image_link>' . "\r\n";
// Производитель
$out .= '<g:brand>' . $row['brand'] . '</g:brand>' . "\r\n";
// Наличие
// in stock - в наличии
// out of stock - нет в наличии
// preorder - предзаказ
// backorder - на заказ
$out .= '<g:availability>in stock</g:availability>' . "\r\n";
// Категория товара, можно на русском, но желательно из классификатора
// https://www.google.com/basepages/producttype/taxonomy-with-ids.en-US.txt
$out .= '<g:google_product_category>Furniture > Sofas</g:google_product_category>' . "\r\n";
// Стоимость и срок доставки
$out .= '
<g:shipping>
<g:country>RU</g:country>
<g:price>300.00 RUB</g:price>
<g:min_handling_time>1</g:min_handling_time>
<g:max_handling_time>3</g:max_handling_time>
<g:min_transit_time>1</g:min_transit_time>
<g:max_transit_time>3</g:max_transit_time>
</g:shipping>';
$out .= '</item>' . "\r\n";
}
$out .= '</channel>' . "\r\n";
// Вывод в браузер
header('Content-Type: text/xml; charset=utf-8');
echo $out;
// Или сохранение в файл
// file_put_contents(__DIR__ . '/merchant.xml', $out);
exit();
Пример сформированного файла merchant.xml:
<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<channel>
<title>Рога и копыта</title>
<description>Магазин по продаже...</description>
<link>https://example.com/</link>
<item>
<g:id>123</g:id>
<title>Плитка Venis Deli Ash 45x120 (Керамическая, настенная)</title>
<link>https://example.com/prod/123</link>
<g:description>
<![CDATA[Коллекция: Deli, Ширина: 45см, Длина: 120см]]>
</g:description>
<g:price>6720.00 RUB</g:price>
<g:sale_price>4838.00 RUB</g:sale_price>
<g:image_link>https://example.com/img/1.jpg</g:image_link>
<g:image_link>https://example.com/img/2.jpg</g:image_link>
<g:brand>Venis</g:brand>
<g:availability>in stock</g:availability>
<g:google_product_category>Furniture > Sofas</g:google_product_category>
<g:shipping>
<g:country>RU</g:country>
<g:price>300.00 RUB</g:price>
<g:min_handling_time>1</g:min_handling_time>
<g:max_handling_time>3</g:max_handling_time>
<g:min_transit_time>1</g:min_transit_time>
<g:max_transit_time>3</g:max_transit_time>
</g:shipping>
</item>
</channel>
</rss>
Перенаправление с .php на .xml
Например данный скрипт лежит в корне сайта с именем sitemap.php, вы хотите чтобы он открывался по адресу https://example.com/sitemap.xml
. В файле .htaccess нужно добавить запись: