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

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

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

1

Некоторые ограничения

Количество символов в элементах <title>, <h1> 240
Общее количество картинок в RSS-канале 5000
Количество картинок в одном элементе <item> 30
Количество элементов <item> 500
Размер RSS-канала 15 МБ
Максимальное количество ссылок в элементе <menu> 10
2

Генерация xml файла

<?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, обновлено 27.08.2019 5445
Предыдущая запись RSS канал на PHP

Поделится

Темы

PHP XML Яндекс

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

Если требуется сделать импорт или обновление товаров по XML файлу Яндекс Маркета, можно применить расширении PHP...
Можно найти множество применений Яндекс Диска на своем сайте, например, хранение бекапов и отчетов, обновление прайсов,...
Директивы файла robots.txt для Яндекс и Google
Примеры как зарегистрировать бота в Телеграм, описание и взаимодействие с основными методами API.
Пример создания файла карты сайта (sitemap.xml) на PHP. Интеграция его на сайт и подключение его в robots.txt
Сборник советов как поднять оценку в PageSpeed Insights.