Настройка Яндекс.Турбо-страниц для 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка Яндекс.Турбо-страниц для 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка Яндекс.Турбо-страниц для 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.