RSS-файл для Яндекс Турбо-страниц

Турбо-страницы позволяют пользователям посмотреть «легкую» версию сайта, которая загружается быстрее в десятки раз, а ведь это увеличивает вероятность, что посетитель останется на странице и найдет нужную информацию. Также на такие страницы можно добавить рекламные блоки и веб-аналитику.

Полное руководство на yandex.ru/support/webmaster/turbo

1
Количество символов в элементах <title>, <h1> 240
Общее количество картинок в RSS-канале 5000
Количество картинок в одном элементе <item> 30
Количество элементов <item> 500
Размер RSS-канала 15 МБ
Максимальное количество ссылок в элементе <menu> 10
2
<?php
// Локаль.
setlocale(LC_ALL, 'ru_RU');
date_default_timezone_set('Europe/Moscow');

$url = 'http://site.com';

$out = '<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:yandex="http://news.yandex.ru" 
	 xmlns:media="http://search.yahoo.com/mrss/" 
	 xmlns:turbo="http://turbo.yandex.ru" 
	 version="2.0">
	<channel>
		<title>НАЗВАНИЕ_САЙТА</title>
		<link>' . $url . '</link>
		<description>ОПИСАНИЕ_САЙТА</description>
		<language>ru</language>
		<turbo:analytics id="КОД_ЯНДЕКС_МЕТРИКИ" type="Yandex" params=""></turbo:analytics>';

		$dbh = new PDO('mysql:dbname=DB_NAME;host=localhost', 'ЛОГИН', 'ПАРОЛЬ');
		$sth = $dbh->prepare("SELECT `name`, `text` FROM `articles`");
		$sth->execute();
		$articles = $sth->fetchAll(PDO::FETCH_ASSOC);	

		foreach ($articles as $row) {
			$text = $row['text'];
			
			// Удаление лишних тегов.
			$text = strip_tags($text, '<p><img><iframe><br><ul><ol><li><b><strong><i><em><sup><sub><ins><del><small><big><pre></pre><abbr><u><a>'); 

			// Замена относительных ссылок.
			$text = str_replace('src="/', 'src="' . $url . '/', $text); 
			$text = str_replace('href="/', 'href="' . $url . '/', $text); 

			$out .= '
			<item turbo="true">		
				<link>' . $url . '/URL_СТРАНИЦЫ</link>
				<turbo:content>
					<![CDATA[
						<header>
							<h1>' . $row['name'] . '</h1>
							<menu>
								<a href="' . $url . '/">О сайте</a>
								<a href="' . $url . '/articles">Статьи</a>
								<a href="' . $url . '/news">Новости</a>
							</menu>
						</header>
						' . $text . '
					]]>
				</turbo:content>			
			</item>';	
		}
	
		$out .= '
	</channel>
</rss>';

header('Content-Type: text/xml; charset=utf-8');
echo $out;
PHP
3
<rss xmlns:yandex="http://news.yandex.ru" xmlns:media="http://search.yahoo.com/mrss/" 
xmlns:turbo="http://turbo.yandex.ru" version="2.0">
	<channel>
		<title>Snipp.ru</title>
		<link>http://snipp.ru</link>
		<description/>
		<language>ru</language>
		<item turbo="true">
			<link>http://snipp.ru/view/113</link>
			<turbo:content>
				<![CDATA[
					<header>
						<h1>Релевантный поиск c помощью LIKE</h1>
						<menu>
							<a href="http://snipp.ru/">О сайте</a>
							<a href="http://snipp.ru/articles">Статьи</a>
							<a href="http://snipp.ru/news">Новости</a>
						</menu>
					</header>
					<p>Например, на сайте статей есть поиск, он ищет ключевое слово по полям: 
					название статьи, title и основной текст. SQL запрос получается следующим:</p>
				]]>
			</turbo:content>
		</item>
	</channel>
</rss>

Далее URL фида нужно добавить в источники Турбо-страниц в Яндекс вебмастере, и после проверки в поисковой выдаче появится у иконка:

А сам сайт и меню будет следующего вида:

Вид сайта в турбо-страницах Вид сайта в турбо-страницах, меню
4

Для удаление статьи из выдачи нужно перевести атрибут turbo в false:

<item turbo="false">
	...
</item>

Если отключить и удалить в вебмастере источник (ссылку на RSS канал), то в выдаче Яндекса турбо-страницы все равно останутся. Для полного удаления нужно вернуть источник и выставить false для всех статей.

20.04.2018, обновлено 03.04.2022
22869
Предыдущая запись RSS канал на PHP

Комментарии 2

Сергей Филатов Сергей Филатов
9 января 2021 в 12:27
Спасибо за пример!
Подскажите, пожалуйста, как сделать вывод последних 20 новостей?
Kirill Kozlov Kirill Kozlov
11 февраля 2022 в 16:22
в sql запросе укажи LIMIT 20
SELECT * FROM news LIMIT 20;

, чтобы добавить комментарий.

Другие публикации

Чтение XML файла Яндекс Маркета в PHP
Если требуется сделать импорт или обновление товаров по XML файлу Яндекс Маркета, можно применить расширении PHP...
14361
+5
Релевантный поиск c помощью LIKE
Например, на сайте статей есть поиск, он ищет ключевое слово по полям: название статьи, title и основной текст. SQL...
9834
+4
Рекомендации по SEO настройке сайта
Сборник рекомендаций по настройке сайта помогающий исключить проблемы при индексировании поисковыми системами.
8941
+5
Переезд сайта на HTTPS
В последнее время вопрос переезда сайта с HTTP на HTTPS перешел из рекомендаций в необходимость, как со стороны поисковиков, так и браузеров.
4683
+1
Метрика API
API Яндекс метрики позволяет получить информацию о посещаемости сайта и формировать отчеты, но с ограничением в 30 запросов в секунду и 5000 в сутки.
17410
+6
Описание файла robots.txt
Директивы файла robots.txt для Яндекс и Google
11387
-2