Так вот, если вы уже используете или хотите задействовать стандартный компонент новостей + rss, вы можете адаптировать шаблон rss фида под турбо страницы, для этого потребуется выполнить несколько шагов.
Подключаем турбо-страницы к Новостям Битрикса
- Создаем новый раздел на сайте, например, yandex-turbo. В этом разделе будет создан файл index.php и откроется в визуальном редакторе, удалите лишний текст из этого файла и вставьте в него компонент из правой колонки: "Контент -> RSS -> RSS новости (экспорт)".
- Теперь ваша страница с RSS лентой доступна по адресу: ваш-сайт.ru/yandex-turbo/
Возможно у вас выйдет ошибка, например "Информационный блок не найден" или другая. В любом случае лучше проверить настройки подключения.
Для этого откройте файловый менеджер, в корне сайта найдите папку yandex-turbo (или ваше название/путь к ней), в ней откройте (редактировать как php) тот самый файл index.php.
Скорее всего внутри файла будет что-то наподобие этого:<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); $APPLICATION->SetTitle("Новый раздел"); ?><?$APPLICATION->IncludeComponent( "bitrix:rss.out", ".default", Array(), false );?><?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php"); ?>
Но нам нужно выставить параметры для подключения компонента к инфоблоку + сделать вывод на пустой странице, без какого-либо дизайна. Примерно таким будет ваш код:
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");?> <?$APPLICATION->IncludeComponent( "bitrix:rss.out", ".default", Array( "IBLOCK_TYPE" => "news", "IBLOCK_ID" => "1", "SECTION_ID" => "", "SECTION_CODE" => "", "NUM_NEWS" => "20", "NUM_DAYS" => "30", "RSS_TTL" => "60", "YANDEX" => "Y", "SORT_BY1" => "ACTIVE_FROM", "SORT_ORDER1" => "DESC", "SORT_BY2" => "SORT", "SORT_ORDER2" => "ASC", "FILTER_NAME" => "", "CACHE_TYPE" => "A", "CACHE_TIME" => "3600", "CACHE_NOTES" => "", "CACHE_FILTER" => "N", "CACHE_GROUPS" => "Y" ), false );?> <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");?>
Важные для нас строки:
- ".default", // Указываем шаблон компонента, но если вы скопировали компонент и шаблон компонента (рекомендую скопировать) в своё пространство имён, то может отличаться.
- "IBLOCK_TYPE" => "news", // Здесь указываем код инфоблока (посмотреть можно в админке, идем по пути: Контент -> Инфоблоки -> Типы инфоблоков -> Новости -> Ваш Инфоблок).
- "IBLOCK_ID" => "1", // Указываем ID инфоблока, смотрим там же.
Сохраняем файл, после этого у вас уже должен появится стандартный RSS фид с синтаксисом пригодным для сервиса "Яндекс Новости".
- Третьим шагом мы поправим баг парсера компонента rss.out.php. Для этого перейдите в файловый менеджер и найдите файл: bitrix -> components -> bitrix -> rss.out -> component.php
Откройте его (редактировать как php), найдите строку 325:$arItem["full-text"] = htmlspecialcharsbx(htmlspecialcharsback($arElement["DETAIL_TEXT"]));
Поменяйте ее на строку:
$arItem["full-text"] = /*htmlspecialcharsbx(*/htmlspecialcharsback($arElement["DETAIL_TEXT"])/*)*/;
Это не совсем баг, но данное экранирование символов преобразует все html теги в спец-символы, а нам нужен полноценный вывод разметки в новости. Сохраните файл.
- Осталось поправить шаблон rss, который формирует структуру xml файла.
Если вы скопировали шаблон компонента в вашу тему, то файл по пути: bitrix -> templates -> ваша-тема -> components -> bitrix -> rss.out -> .default -> template.php
Если вы хотите отредактировать шаблон rss.out.php в ядре битрикса, то путь другой: bitrix -> components -> bitrix -> rss.out -> templates -> .default -> template.phpРедактируем template.php
- В элемент <rss version="2.0"> нужно добавить строчку xmlns:turbo="http://turbo.yandex.ru"
- В элемент <item> добавить turbo="true"
- Внутрь получившегося элемента <item turbo="true"> нужно добавить
<turbo:content> <![CDATA[ <figure> <img src="<?=$arItem["enclosure"]["url"]?>" /> </figure> <? $yandexText = $arItem["full-text"]; $yandexText = preg_replace('/(<img.+?>)/iu','<figure>$1</figure>', $yandexText ); echo $yandexText; ?> ]]> </turbo:content>
Турбо-страницы готовы к валидации
Вот и все, ваша ссылка ваш-сайт.ru/yandex-turbo/ готова для прохождения валидации в веб-мастере Яндекса. Способ конечно не самый красивый, но на данный момент других решений не нашел, старался изложить максимально подробно, возможно что-то упустил, пишите в комментариях!