Назад к списку

Создание Google Merchant Feed для интернет-магазина на Битрикс: полное руководство

я часто сталкиваюсь с необходимостью настройки продуктовых фидов для Google Merchant Center. В этой статье я подробно разберу решение для интернет-магазина на CMS Битрикс.

Что такое Google Merchant Feed и зачем он нужен?

Google Merchant Feed — это XML-файл с информацией о товарах, который используется для интеграции с сервисами Google (Google Shopping, рекламные кампании и т.д.). Правильно настроенный фид:

• Увеличивает видимость товаров в Google
• Улучшает качество рекламных кампаний
• Автоматизирует процесс обновления товарной информации

Реализация фида на Битрикс

Рассмотрим ключевые аспекты реализации:

1. Базовая структура RSS-фида
 <?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); ?>
 <rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
     <channel>
        <title>Название сайта</title>         <link>Домен сайта</link>         <description>Описание сайта</description>

SEO-рекомендация: Используйте в описании канала ключевые слова, но избегайте переспама.

2. Получение товаров из инфоблока

 header('Accept: application/xml');
 header('Content-Type: application/xml');
 
use Bitrix\Main\Loader; use Bitrix\Catalog\Model\Price;
// Получаем элементы инфоблока CModule::IncludeModule("iblock"); $arFilter = array("IBLOCK_ID" => 18, "ACTIVE" => "Y"); $arSelect = array("ID", "NAME", "DETAIL_PAGE_URL", "PROPERTY_*", "DETAIL_TEXT", "PREVIEW_PICTURE"); $res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);

не забудьте в “IBLOCK_ID” указать свой инфоблок товаров.

Важно: Обратите внимание на фильтр по активности — это исключает неактивные товары из фида.

3. Формирование обязательных атрибутов товара

Для Google Merchant обязательными являются:

• ID товара
• Название
• Описание
• Ссылка
• Изображение
• Цена
• Наличие
	 while ($ob = $res->GetNextElement()) {
	             $arFields = $ob->GetFields();
	             $arProps = $ob->GetProperties();
	  
	             // Формируем данные для фида
	             $id = $arFields["ID"];
	             $title = $arFields["NAME"];
	             $desc = iconv_substr($arFields["DETAIL_TEXT"], 0 , 5000 , "UTF-8");
	             $link = "Домен сайта" . $arFields["DETAIL_PAGE_URL"];
	             $image = "Домен сайта" . CFile::GetPath($arFields["PREVIEW_PICTURE"]);
	             $available = ($arProps["STOCK"]["VALUE"] == "Y") ? "in stock" : "out of stock";
	  
	             $priceData = Price::getList([
	                 'filter' => ['PRODUCT_ID' => $arFields["ID"]],
	                 'select' => ['ID', 'PRICE', 'CURRENCY'],
	                 'limit' => 1,
	             ])->fetch();
	             $price = $priceData['PRICE'];
	             ?>
	             <item>
	                 <g:id><?=$id?></g:id>
	                 <g:title><?=$title?></g:title>
	                 <g:description><?=htmlspecialcharsbx($desc)?></g:description>
	                 <g:link><?=$link?></g:link>
	                 <g:image_link><?=$image?></g:image_link>
	                 <g:condition>new</g:condition>
	                 <g:availability><?=$available?></g:availability>
	                 <g:price><?=$price?> RUB</g:price>
	             </item>
	             <?
	             unset($more_photo);
	         }
	         ?>
	     </channel>
	 </rss>
  
SEO-совет: Описание товара (description) должно быть уникальным и содержательным, но не превышать 5000 символов (в коде это ограничение уже реализовано).

Полностью код:
 
 <?php require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); ?> <rss xmlns:g="http://base.google.com/ns/1.0&quot; version="2.0">     <channel>         <title>Название сайта</title>         <link>Домен сайта</link>         <description>Описание сайта</description> <? header('Accept: application/xml'); header('Content-Type: application/xml');   use Bitrix\Main\Loader; use Bitrix\Catalog\Model\Price;   // Получаем элементы инфоблока CModule::IncludeModule("iblock"); $arFilter = array("IBLOCK_ID" => 18, "ACTIVE" => "Y"); $arSelect = array("ID", "NAME", "DETAIL_PAGE_URL", "PROPERTY_*", "DETAIL_TEXT", "PREVIEW_PICTURE"); $res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect); while ($ob = $res->GetNextElement()) {             $arFields = $ob->GetFields();             $arProps = $ob->GetProperties();               // Формируем данные для фида             $id = $arFields["ID"];             $title = $arFields["NAME"];             $desc = iconv_substr($arFields["DETAIL_TEXT"], 0 , 5000 , "UTF-8");             $link = "Домен сайта" . $arFields["DETAIL_PAGE_URL"];             $image = "Домен сайта" . CFile::GetPath($arFields["PREVIEW_PICTURE"]);             $available = ($arProps["STOCK"]["VALUE"] == "Y") ? "in stock" : "out of stock";               $priceData = Price::getList([                 'filter' => ['PRODUCT_ID' => $arFields["ID"]],                 'select' => ['ID', 'PRICE', 'CURRENCY'],                 'limit' => 1,             ])->fetch();             $price = $priceData['PRICE'];             ?>             <item>                 <g:id><?=$id?></g:id>                 <g:title><?=$title?></g:title>                 <g:description><?=htmlspecialcharsbx($desc)?></g:description>                 <g:link><?=$link?></g:link>                 <g:image_link><?=$image?></g:image_link>                 <g:condition>new</g:condition>                 <g:availability><?=$available?></g:availability>                 <g:price><?=$price?> RUB</g:price>             </item>             <?             unset($more_photo);         }         ?>     </channel> </rss>
Частые ошибки и их решение

1. Некорректные цены: Убедитесь, что цена соответствует формату “число RUB”.
2. Дубли товаров: Каждый товар должен иметь уникальный ID.
3. Некорректные ссылки: Все URL должны быть абсолютными и работоспособными.
4. Несоответствие наличия: Актуальность статуса “in stock”/”out of stock” критически важна.

Заключение

Реализованный код представляет собой эффективное решение для выгрузки товаров интернет-магазина нумизматики в Google Merchant Center. Такой подход:
1. Полностью автоматизирует процесс обновления товарных данных
2. Учитывает специфику монет и инвестиционных товаров
3. Соответствует требованиям Google Shopping
Правильно настроенный продуктовый фид — это основа успешного продвижения в Google Shopping и значительный источник целевого трафика для интернет-магазина.
Услуги по 1С-Битрикс

CMS 1С-Битрикс, Bitrix24 CRM и 1С:Предприятие — в чем разница?

Подробнее

QuadCRM: Революционный Инструмент для Парсинга и Автоматизации Интернет-Магазинов

Подробнее

Как выбрать Аспро?

Подробнее