Генерация XML файла для Google Merchant

Генерация XML файла для Google Merchant

Пример генерации 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();
PHP

Пример сформированного файла ​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 нужно добавить запись:

RewriteEngine On
RewriteRule ^merchant.xml$ merchant.php [L]
htaccess
04.06.2021
7375
Предыдущая запись Преобразование цветов в PHP
Следующая запись Переезд сайта на HTTPS

Комментарии

, чтобы добавить комментарий.

Другие публикации

RSS-файл для Яндекс Турбо-страниц
Турбо-страницы позволяют пользователям посмотреть легкую версию сайта, которая загружается быстрее в десятки раз, а...
22840
+7
Как сформировать большой файл для маркета
На сайте интернет-магазина с большим количеством товаров (от 8000) возникает проблема с формированием XML-фида для...
3840
+4
Настройки кодировки UTF-8 на сайте
В данной статье сведен перечень приемов для правильной работы сайта в кодировке UTF-8.
10102
+2
Генерация QR-кода в PHP
Вопрос генерации QR-кодов в PHP достаточно освещён, есть много библиотек, одной из них является «PHP QR Code» – быстрый и легкий класс, рассмотрим его применение совместно с графической библиотекой...
66548
+18
Переезд сайта на HTTPS
В последнее время вопрос переезда сайта с HTTP на HTTPS перешел из рекомендаций в необходимость, как со стороны поисковиков, так и браузеров.
4672
+1
Бот Телеграм на PHP
Примеры как зарегистрировать бота в Телеграм, описание и взаимодействие с основными методами API.
141275
+44