Найти в Дзене
Хитрости Жизни PRO

⚙️ Как сделать динамический YML через PHP и Google Sheets — чтобы фид обновлялся автоматически

Если вы уже сделали свой первый YML-файл и добавили его в Яндекс.Вебмастер, следующий шаг — автоматизация.
Чтобы больше не редактировать XML вручную и не обновлять цены каждый день, можно сделать динамический YML-фид, который создаётся “на лету” из Google Sheets или базы данных 💡 Разберём пошагово, как это сделать. Обычный YML — это статичный XML-файл.
Вы сделали его один раз, загрузили на сервер, и всё. Но при изменении цен или остатков нужно снова вручную обновлять. Динамический YML работает иначе: ✅ Аккаунт Google и таблица с товарами
✅ Доступ к серверу с PHP
✅ Любой текстовый редактор Создайте таблицу со столбцами: Теперь сделайте таблицу доступной для чтения по ссылке:
Файл → Опубликовать в интернете → CSV. После публикации вы получите ссылку примерно такого вида: Эта ссылка будет источником данных для вашего фида. На сервере создайте файл, например:
/public_html/yml.php И вставьте код: <?php header("Content-Type: text/xml; charset=utf-8"); // Ссылка на опубликованную табл
Оглавление

Если вы уже сделали свой первый YML-файл и добавили его в Яндекс.Вебмастер, следующий шаг — автоматизация.

Чтобы больше не редактировать XML вручную и не обновлять цены каждый день, можно сделать
динамический YML-фид, который создаётся “на лету” из Google Sheets или базы данных 💡

Разберём пошагово, как это сделать.

🔹 Что такое динамический YML

Обычный YML — это статичный XML-файл.

Вы сделали его один раз, загрузили на сервер, и всё. Но при изменении цен или остатков нужно снова вручную обновлять.

Динамический YML работает иначе:

  • данные берутся из таблицы Google Sheets (или базы);
  • скрипт на PHP формирует XML в реальном времени;
  • файл всегда актуален — без ручного обновления.

🧱 Что понадобится

✅ Аккаунт Google и таблица с товарами

✅ Доступ к серверу с PHP

✅ Любой текстовый редактор

📊 Шаг 1. Подготовьте таблицу в Google Sheets

Создайте таблицу со столбцами:

-2

Теперь сделайте таблицу доступной для чтения по ссылке:

Файл → Опубликовать в интернете → CSV.

После публикации вы получите ссылку примерно такого вида:

-3

Эта ссылка будет источником данных для вашего фида.

💻 Шаг 2. Создайте PHP-скрипт

На сервере создайте файл, например:

/public_html/yml.php

И вставьте код:

<?php

header("Content-Type: text/xml; charset=utf-8");

// Ссылка на опубликованную таблицу Google Sheets (CSV)

$sheet_url = "https://docs.google.com/spreadsheets/d/1AbCdEfGh12345/export?format=csv";

// Загружаем CSV

$csv = array_map('str_getcsv', file($sheet_url));

$headers = array_shift($csv);

echo '<?xml version="1.0" encoding="UTF-8"?>';

?>

<yml_catalog date="<?=date('Y-m-d H:i')?>">

<shop>

<name>Мой магазин</name>

<company>ООО «Мой магазин»</company>

<url>https://test.ru</url>

<currencies>

<currency id="RUR" rate="1"/>

</currencies>

<offers>

<?php foreach ($csv as $row):

$data = array_combine($headers, $row); ?>

<offer id="<?=htmlspecialchars($data['id'])?>" available="<?=htmlspecialchars($data['available'])?>">

<url><?=htmlspecialchars($data['url'])?></url>

<price><?=htmlspecialchars($data['price'])?></price>

<currencyId>RUR</currencyId>

<categoryId>1</categoryId>

<picture><?=htmlspecialchars($data['image'])?></picture>

<vendor><?=htmlspecialchars($data['vendor'])?></vendor>

<name><?=htmlspecialchars($data['name'])?></name>

<description><?=htmlspecialchars($data['category'])?></description>

</offer>

<?php endforeach; ?>

</offers>

</shop>

</yml_catalog>

Теперь по ссылке:

https://ваш_сайт.ru/yml.php

вы получите живой XML-фид, который автоматически подгружает актуальные данные из Google Sheets 💫

🔄 Шаг 3. Настройте автоматическое обновление

Фид обновляется каждый раз при запросе, но можно добавить кеширование для оптимизации:

if (file_exists('cache.xml') && time() - filemtime('cache.xml') < 3600) {

readfile('cache.xml');

exit;

}

ob_start();

// … тут формируется XML …

file_put_contents('cache.xml', ob_get_contents());

ob_end_flush();

Так вы избежите лишней загрузки таблицы — обновление будет раз в час.

🧠 Преимущества такого подхода

✅ Данные обновляются автоматически

✅ Не нужно заливать файлы вручную

✅ Можно управлять товарами прямо в Google Sheets

✅ Работает на любом хостинге с PHP

⚙️ Итог

Динамический YML через PHP и Google Sheets — идеальное решение, если у вас:

  • нет CMS, но есть товары;
  • нужно быстро обновлять цены и остатки;
  • хочется упростить жизнь себе и маркетологу 😊

💬 Если статья была полезной — ставьте лайк и подписывайтесь!

В следующем материале разберём:

👉 как добавить автоматическую выгрузку по cron и связать динамический YML с Яндекс.Маркетом.

🏷️ Хэштеги:

#yml #яндексвебмастер #яндексмаркет #googleSheets #php #xml #фид #интернетмагазин #автоматизация #seo #директ #вебразработка #созданиесайта #продвижениесайта #онлайнторговля #маркетплейсы