Давайте сегодня разберёмся, как создать простой автообновляемый фид для динамический объявлений, благодаря которому Вы сможете запустить рекламу через такие инструменты как:
- товарная компания;
- динамический ремаркетинг;
- смарт банера;
- компании в Yandex Market.
Это позволит визуально продемонстрировать пользователю ваш товар. А также напомнить пользователю о товарах, которые они просматривали на вашем сайте.
Для чего нужно создание фида для Google Merchant Center и Google AdWords
Данные, которые содержатся в фиде отображаются в объявлениях, например, в Google или Yandex. Чем полнее фид, тем красивее и привлекательнее ваше объявление, а следовательно, по нему чаще переходят на Ваш ресурс.
Что такое фид данных?
Смысл работы динамического ремаркетинга хорошо раскрыт в видео от Google
Фид данных - это файл, в котором содержится подробная и точная информация о продукции на вашем сайте, оттуда система берет информацию для отображения в вашем объявлении.
Виды фидов
Существует два вида фидов:
- фид для Google Merchant Center*
- фид для AdWords
*Google Покупки (Google Merchant Center) в настоящее время доступны в России, Австралии, Австрии, Бельгии, Бразилии, Великобритании, Германии, Дании, Испании, Италии, Канаде, Мексике, Нидерландах, Норвегии, Польше, США, Турции, Франции, Чехии, Швейцарии, Швеции, Японии.
Поскольку Merchant Center не поддерживается в некоторых странах, мы также разберем фид для AdWords, который будет актуален, например, для Украины.
Первым делом мы разберем фид для Merchant Center.
Как создать фид для Merchant Center?
Что нам понадобится для создания фида?
- Подключение к базе данных сайта.
- Доступ к ftp.
- Спецификация фида.
Есть множество фреймворков и cms систем, на некоторые из них есть модули (например, на коммерческую cms 1с Bitrix вы можете купить модуль), на некоторые нет. Поэтому, мы напишем универсальный скрипт, которым будем получать информацию о товарах из базы данных.
Где мы можем взять доступы?
Рассмотрим на примере хостинга ukraine.com.ua
Заходим на сайт хостинга и входим в панель управления.
- База данных. Заходим записываем host , login, password, и имя базы данных.
- Это phpMyAdmin, для удобного доступа к базе.
- FTP доступ для доступа к файлам сайта.
После того, как получены все доступы, нам нужна спецификация фида, её можем найти на сайте системы, для которой делам фид, в нашем случае Google. Вот тут.
Форматы фидов для Google AdWords и Яндекс.Директ
Вот, например, скриншот фрагмента фида для Яндекс в формате xml:
самые распространенные форматы:
- .xml
- .txt
Чтобы не попасть впросак, для фида мы выбирем с вами формат XML.
В октябре 2016 года Google обновил спецификацию, суть этого обновления в том, чтобы привести формат фидов для разных стран к более единому. Обновлёны атрибуты, был убран формат фидов XLS (EXEL) и не только. С полным описанием Вы можете ознакомиться по ссылке.
Давайте посмотрим на информацию, которая нам необходима. В разделе “Основные сведения о товарах” нам нужно найти все параметры с пометкой обязательный и добавить их в наш фид.
Давайте начнём! (В качестве редактора можете использовать Notepad++ Писать будем на PHP).
Подключаемся к FTP (все доступы Вы можете посмотреть на хостинге сайта), создаем файл в корне сайта feed.php (Вы можете назвать его как захотите)
1) нужно подключиться к базе данных.
$mysqli = new mysqli("ХОСТ", "ЛОГИН", "ПАРОЛЬ", "БАЗА ДАННЫХ"); if(!$mysqli) { die('Ошибка подключения к базе данных'); } $mysqli->query("SET CHARACTER SET 'utf8'");
2) нужно сделать запрос для получения данных, например такой:
$res = $mysqli->query("select * from products" ); /* У каждого он разный, вот тут есть уроки, как делать запросы https://devionity.com/ru/courses/mysql-fundamentals */ $mysqli->close(); //Закрываем соединение
Теперь самое важное - создание нужной нам структуры XML документа:
$xml = new DomDocument('1.0', 'utf-8'); //создаем новый экземпляр< $rss = $xml->appendChild($xml->createElement('rss')); // добавляем тег rss $rss->setAttribute('version', '2.0'); //атрибуты $rss->setAttribute('xmlns:g', 'http://base.google.com/ns/1.0');//атрибуты/ $main_title = $rss->appendChild($xml->createElement('title')); $main_title->appendChild($xml->createTextNode('ТУТ ВАШ ТАЙТЛ ')); $main_link = $rss->appendChild($xml->createElement('link')); $main_link->appendChild($xml->createTextNode(ROOT)); $main_desc = $rss->appendChild($xml->createElement('description')); $main_desc->appendChild($xml->createTextNode('Краткое описание')); $items = $rss->appendChild($xml->createElement('channel'));
На выходе имеем подобное:
<?xml version="1.0"?> <rss version="2.0" xmlns:g="http://base.google.com/ns/1.0"> <channel> <title>Название фида данных</title> <link>http://www.example.com</link> <description>Описание содержимого фида</description> </channel>
Далее нам нужно создать item и вставить все теги которые указаны как обязательные.
Если мы кликнем по названию тега, мы перейдем на страницу с нужной нам информацией
Нам нужен тег в формате XML.
Заполняем далее, вставим теги по продуктам:
while (($products = $res->fetch_assoc()) != false) { $item = $items->appendChild($xml->createElement('item')); $id = $item->appendChild($xml->createElement('g:id')); $id->appendChild($xml->createTextNode($products['products_id'])); $title = $item->appendChild($xml->createElement('g:title' )); $title->appendChild($xml->createTextNode($name)); $condition = $item->appendChild($xml->createElement('g:condition')); $condition->appendChild($xml->createTextNode('new')); $url = $item->appendChild($xml->createElement('g:url')); $url->appendChild($xml->createTextNode($products['url'])); $price = $item->appendChild($xml->createElement('g:price')); $price->appendChild($xml->createTextNode($products['products_price'])); //img link $image_link = $item->appendChild($xml->createElement('g:image_link')); $image_link->appendChild($products['image_link'])); $shipping = $item->appendChild($xml->createElement('g:shipping')); $shipping->appendChild($xml->createTextNode('true')); $description = $item->appendChild($xml->createElement('g:description')); $description->appendChild($xml->createTextNode($products['description'])); $availability = $item->appendChild($xml->createElement('g:availability')); $availability->appendChild($xml->createTextNode('in stock')); }
Создаем узлы и вставляем значения.
Дальше нужно сохранить файл, для этого пишем следующий код:
$xml->formatOutput = true; #-> устанавливаем выходной формат документа в true if($xml->save('feed.xml')) { echo 'Обновление фида завершилось успешно! '; }else { echo "Не удалось сохранить файл фида данных. Возможно у файла не достаточно прав доступа "; } $xml->save('feed.xml'); #-> сохраняем файл ?> <a href="feed.xml">здесь</a>
Теперь нужно выполнить наш скрипт, для создания фида
site.com/**.php **- имя , которое Вы дали файлу.
Наш фид будет сохранен в той же папке где находится скрипт.
Теперь он будет доступен по адрессу site.com/feed.xml
Но нам же нужно, чтобы он генерировался автоматически!
Для этого есть CRON.
CRON - классический демон-планировщик задач в UNIX-подобных операционных системах, использующийся для периодического выполнения заданий в определённое время. Регулярные действия описываются инструкциями, помещенными в файлы crontab и в специальные директории.
Если по-простому, то это планировщик, который запускает скрипты по расписанию.
На хостинге, который мы взяли для примера (ukraine.com.ua), есть встроенный планировщик CRON
Добавляем задачу
Теперь сохраняем, и вуаля, каждый день ровно в полночь будет генерироваться фид данных)
Конечный результат выглядит примерно так:
<link>http://www.test.ru/</link> <description>База</description> <channel> <item> <g:id>135112</g:id> <g:title>Acme CL-15 Red // AcCL15R</g:title> <g:condition>new</g:condition> <g:url> http://www.test.ru/products/svet/ex </g:url> <g:price>44 RUB</g:price> <g:image_link>http://www.test.ru/data/products/images/accl15r_photo.jpg </g:image_link> <g:shipping>true</g:shipping> <g:local_delivery_cost>400</g:local_delivery_cost> <g:description> Acme CL-15 Светофильтр пластиковый для прожектора PAR 36, цвета в ассортименте </g:description> <g:availability>in stock</g:availability> <g:brand>Acme</g:brand> <g:category>Светофильтры</g:category> </item> …. …. …. </item> </channel> </rss>
Профессиональную настройку Merchant Center вы можете заказать у наших специалистов здесь .
Теперь я хотел бы привести пример создания фида для Украины в формате csv.
Выглядит он так:
Каждая строка соответствует определенному товару.
А столбцы содержат следующую информацию:
ID — уникальный идентификатор товара (значения не должны повторяться);
Item title — название товара;
Price — цена товара;
Image URL — ссылка на изображение товара;
Final URL — ссылка на страницу с товаром.
Вы можете создать фид в формате CSV, кодировка UTF-8, разделитель запятая.
Также важно, чтобы фид данных был доступен по ссылке, например: http://www.test.ua/feed.csv (первый раз загружаем фид вручную в Адвордс, дальше будем обновлять его по ссылке), и этот фид должен автоматически обновляться с периодичностью минимум раз в день, максимум раз в неделю.
Ссылка на справку Adwords “Создание фида для динамических объявлений”:
допустим, мы получили выборкой массив с продуктами
$data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'description' => mb_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 100) . '..', 'price' => $price, 'href' => $result['href']) );
То создание csv файла будет выглядеть так:
$arr = array(); $arr[] = ['ID', 'Item title', 'Price', 'Image URL', 'Final URL']; foreach ($data['products'] as $v) { $image = str_replace(' ', '%20', $v['thumb']); $price = str_replace(' ', '', $v['price']); $price = str_replace('грн', ' UAH', $price); $arr[] = [$v['product_id'], htmlspecialchars($v['name']), str_replace('.00', '', $price), $image, str_replace(' ', '', $v['href'])]; $v['product_id'].';'.$v['name'].';'.$v['price'].';'.$v['thumb'].';'.$v['href'].";\r\n"; } $fp = fopen('feed.csv', 'w'); foreach ($arr as $fields) { fputcsv($fp, $fields); } fclose($fp);
Файл будет создан в корневой директории и доступен по адрессу site.com/feed.csv. По аналогии скрипт нужно поставить на CRON.
Итак, мы закончили создание базового фида данных. Конечно, это общая инструкция. Мы разобрали, как можно создать рабочий автообновляющийся фид для Google Merchant Center и AdWords. Все вопросы Вы можете задать в комментариях к статье, я с радостью отвечу на них!
Если Вы не уверены в своих силах, или хотите существенно сэкономить нервы и время, то мы с радостью поможем Вам в настройке фида данных!
Высоких вам конверсии!