Налаштування Яндекс.Турбо-сторінок для 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування Яндекс.Турбо-сторінок для 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування Яндекс.Турбо-сторінок для 1С-Бітрікс

Яндекс.Турбо-сторінки відаються користувачеві з серверів Яндекса — це прискорює завантаження на мобільних пристроях з повільним інтернетом. Для інтернет-магазину на Бітриксі це означає, що Яндекс повинен отримати RSS-ленту з розміткою Турбо й коректно розпарсити структуру каталогу. Головна проблема: RSS генерується без врахування зображень товарів і структурованих даних, і Яндекс або відмовляє в підключенні, або показує «сиру» сторінку без оформлення.

Формат RSS для Турбо-сторінок

Яндекс вимагає RSS 2.0 з розширенням turbo:. Мінімальний набір полів для карточки товару:

<item turbo="true">
    <link>https://example.com/catalog/product/</link>
    <turbo:content><![CDATA[
        <header>
            <h1>Назва товару</h1>
            <menu>
                <item url="/catalog/">Каталог</item>
                <item url="/catalog/section/">Розділ</item>
            </menu>
        </header>
        <figure>
            <img src="https://example.com/upload/iblock/xxx/photo.jpg" alt="Фото">
        </figure>
        <p>Опис товару</p>
        <div data-block="price">
            <span data-value="price">5990</span>
            <span data-value="currency">RUB</span>
            <a data-block="button" href="/cart/?add=ID">Купити</a>
        </div>
    ]]></turbo:content>
</item>

Генерація RSS у Бітриксі

Створюється кастомний компонент або обробник URL. Оптимально — окрема сторінка /turbo-feed.xml з компонентом, який вибирає елементи інфоблока й генерує XML.

// /turbo-feed.xml
define('NO_KEEP_STATISTIC', true);
define('NOT_CHECK_PERMISSIONS', false);
header('Content-Type: application/rss+xml; charset=utf-8');

$res = \CIBlockElement::GetList(
    ['TIMESTAMP_X' => 'DESC'],
    ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'],
    false,
    ['nTopCount' => 200],
    ['ID', 'NAME', 'DETAIL_PAGE_URL', 'DETAIL_TEXT', 'DETAIL_PICTURE',
     'PREVIEW_TEXT', 'TIMESTAMP_X', 'IBLOCK_SECTION_ID']
);

echo '<?xml version="1.0" encoding="utf-8"?>';
echo '<rss xmlns:yandex="http://news.yandex.ru" xmlns:turbo="http://turbo.yandex.ru" version="2.0">';
echo '<channel>';
echo '<title>Каталог товарів</title>';
echo '<link>' . SITE_SERVER_NAME . '</link>';

while ($el = $res->GetNextElement()) {
    $fields = $el->GetFields();
    $price = \CCatalogProduct::GetOptimalPrice($fields['ID']);
    $imgSrc = '';
    if ($fields['DETAIL_PICTURE']) {
        $img = \CFile::GetFileArray($fields['DETAIL_PICTURE']);
        $imgSrc = 'https://' . SITE_SERVER_NAME . $img['SRC'];
    }
    // ... формування item
}

Зображення: абсолютні URL обов'язкові

Яндекс не приймає відносні шляхи в <img src> всередину turbo:content. Всі зображення повинні мати повний URL з протоколом і доменом. Функція-помічник:

function absoluteImageUrl(string $src): string {
    if (strpos($src, 'http') === 0) return $src;
    return 'https://' . SITE_SERVER_NAME . $src;
}

Кешування RSS-ленти

RSS з 200 товарів на кожний запит — значна навантаження. Кешувати через файловий кеш Бітрікса:

$cache = \Bitrix\Main\Data\Cache::createInstance();
if ($cache->startDataCache(3600, 'turbo_feed', '/turbo')) {
    // генерація RSS
    $xmlContent = generateFeed();
    $cache->endDataCache(['xml' => $xmlContent]);
} else {
    $xmlContent = $cache->getVars()['xml'];
}
echo $xmlContent;

При оновленні товару — скидання через тег iblock_id_ + ID інфоблока.

Підключення у Яндекс.Вебмастер

Після налаштування ленти — додайте URL до «Яндекс.Вебмастер → Турбо-сторінки → RSS-канали». Яндекс обходить ленту з затримкою до 24 годин. Перевірте через інструмент «Перевірити сторінку» — він покаже, як Яндекс бачить кожен item й є помилки в розмітці. Типові помилки: відсутність обов'язкових атрибутів data-block="price", неабсолютні URL зображень, HTML-теги не в CDATA.