yurcrm/yandex-turbo-pages

There is no license information available for the latest version (v2.2) of this package.

API client for Yandex turbo pages

v2.2 2024-05-29 11:04 UTC

This package is auto-updated.

Last update: 2024-09-29 11:46:31 UTC


README

Отправляет в API произвольное количество страниц в виде XML-документов

Для использования API вам необходимо зарегистрироваться в сервисе Яндекс.Вебмастер и получить API-ключ для загрузки турбо-страниц.

Подробно о турбостраницах можно прочитать, например, здесь: https://webmaster.yandex.ru

Установка

Установить пакет вы можете через Composer

composer require yurcrm/yandex-turbo-pages

Пример использования

// Инициализируем клиент в режиме отладки. Для боевого режима укажите третьим параметром TurboApi::MODE_PRODUCTION
$turboApi = new TurboApi\TurboApi('адрес сайта', 'ваш токен', TurboApi::MODE_DEBUG);

// Получаем у Яндекса необходимые данные для отправки турбостраниц
$turboApi->requestUserId();
$turboApi->requestHost();
$turboApi->requestUploadAddress();

// лимит числа страниц в рамках одной задачи. В режиме дебага это число ограничено, см. документацию от Яндекса
$tasksLimit = 30;

$turboPack = new TurboApi\TurboPack('Заголовок сайта', 'URL сайта', 'Краткое описание сайта', 'Код языка сайта');

/*
  Предположим, у вас есть страницы категорий, у каждой - заголовок и описание
*/
foreach ($categories as $category) {
    $link = 'URL страницы категории';
    $taskItem = new TurboApi\TurboItem();

    $taskXML = '<item turbo="true"><link>' . $link . '</link>';
    $taskXML .= '<turbo:content><![CDATA[';
    $taskXML .= '<header>
               <h1>' . $category->seoH1 . '</h1>
           </header>';
    $taskXML .= $category->description;
    $taskXML .= ']]></turbo:content></item>' . PHP_EOL;

    $taskItem->setXml($taskXML);
    $turboPack->addItem($taskItem);
}

// разбиваем массив турбостраниц на задачи
$tasks = $turboPack->getTasks($tasksLimit);

// В этом массиве будем хранить id задач, чтобы потом получать информацию по ним
$taskIds = [];

// отправляем задачи в Яндекс
foreach ($tasks as $task) {
    $taskIds[] = $turboApi->uploadRss($task);
}

Как получить статус обработки задачи

Предположим, в предыдущем примере вы получили массив id задач от Яндекса. Получим статус по задаче $taskId

// Инициализируем клиент в режиме отладки. Для боевого режима укажите третьим параметром TurboApi::MODE_PRODUCTION
$turboApi = new TurboApi\TurboApi('адрес сайта', 'ваш токен', TurboApi::MODE_DEBUG);

// Получаем у Яндекса необходимые данные для отправки турбостраниц
$turboApi->requestUserId();
$turboApi->requestHost();
$turboApi->requestUploadAddress();
$status = $turboApi->getTask($taskId);

Как получить список задач

// Инициализируем клиент в режиме отладки. Для боевого режима укажите третьим параметром TurboApi::MODE_PRODUCTION
$turboApi = new TurboApi\TurboApi('адрес сайта', 'ваш токен', TurboApi::MODE_DEBUG);

// Получаем у Яндекса необходимые данные
$turboApi->requestUserId();
$turboApi->requestHost();

$offset = 0; // Смещение в списке. Минимальное значение — 0
$limit = 5; // Ограничение на количество элементов в списке. Минимальное значение — 1; максимальное значение — 100.
$taskTypeFilter = TurboApi::TASK_TYPE_FILTER_DEBUG; // Фильтрация по режиму загрузки RSS-канала. Возможные значения: DEBUG, PRODUCTION, ALL.
$loadStatusFilter = TurboApi::LOAD_STATUS_FILTER_PROCESSING; // Фильтрация по статусу загрузки RSS-канала. Возможные значения: PROCESSING, OK, WARNING, ERROR.
$status = $turboApi->getTasks($offset, $limit, $taskTypeFilter, $loadStatusFilter);

Как задать данные сервера API

Если необходимо задать данные, отличные от данных по умолчанию (актуальны на 26.09.2022), задайте их через конструктор:

$turboApi = new TurboApi\TurboApi('адрес сайта', 'ваш токен', TurboApi::MODE_DEBUG, 'https://api.webmaster.yandex.net', 'v4');

Планы развития

В будущих версиях появится возможность просматривать более детальные ответы от Яндекса, а не только id задач и статусы.