Турбо-страницы для сайта на Codeigniter
Турбо-страницы, хоть и «со скрипом», но активно развиваются Яндексом и менеджерам проектов приходится учитывать эту технологию в планах развития проектов. Быстрая загрузка сайта или страницы продукта может стать одним из преимуществ и поможет опередить конкурентов.
При формировании Турбо‑страниц их содержимое должно повторять основной контент страниц сайта.
Они формируются на основе контента сайта и технологий Яндекса по единому шаблону и быстро загружаются на десктопах и смартфонах с медленным или нестабильным интернетом. В выдаче Турбо-страницы помечаются пиктограммой в виде ракеты.
Турбо-страницы на Codeigniter: опыт веб-студии
В ходе работ по продвижению сайтов на Коднайтере встал вопрос о создании для них турбо-страниц.
Вариантов реализации было много. Однако, если для других cms и фреймворков, легко найти готовые пакеты в маркетплейсах и на github, то для Codeigniter на момент реализации этой задачи ничего не было.
Как подключить Турбо-страницы
- Подготовить RSS-файл самостоятельно или используйте плагин для вашей CMS
- Загрузить получившийся RSS-файл в Вебмастер
- Включить показ турбо-страниц.
Примечание: для некоторых статейных сайтов Турбо‑страницы могут быть уже сформированы с помощью Автопарсинга - в этой статье такой способ не рассматривается, смотрите документацию Яндекса.
Как сделать Турбо-страницы на Codeigniter
Рассмотрим пример реализации.
1. Создаем файл rss_news.php по пути /modules/news/views, в котором прописываем код обработки данных нужных разделов и формируем xml
Пример части кода:
<?
$file_name = "news.xml";//имя файла, куда будет экспортирован rss
$xml = new XMLWriter(); //создаем новый экземпляр класса XMLWriter
$xml->openURI($file_name); //запись в файл
$xml->setIndent(true);//корректные отступы в rss
$xml->startDocument("1.0", "UTF-8");
$xml->startElement("rss"); $xml->writeAttribute("xmlns:yandex",'http://news.yandex.ru'); $xml->writeAttribute("xmlns:turbo",'http://turbo.yandex.ru');
$xml->writeAttribute("version",'2.0');
$xml->startElement("channel");
foreach ($data->result() as $news) {
$content = "<![CDATA[".$news->full_text."]]>";
$xml->startElement("item");
$xml->writeAttribute("turbo",'true');
....
Далее обрабатываем данные для xml. Html текста преобразовываем с помощью функции htmlspecialchars_decode.
2. Создаем в контроллере (путь /modules/news/controllers) метод класса rss_news, в котором прописываем $this->load->view('rss_news').
3. Добавляем маршрут в route. Для этого идем в папку /application/config и открываем файл routes.php, там прописываем следующий маршрут $route['news/rss_news'] = "new/rss_news";
(пути указаны для примера, используйте свой).
4. После этого идем по адресу доменсайта/news/rss_news файл автоматически создается в корневой директории сайта, с названием, указанным в $file_name.
Проверяем соответствие данных ограничениям:
Количество символов в элементах title, h1, author - 240
Общее количество картинок в RSS-канале - 5000
Количество картинок в одном элементе item, включая картинки, указанные в элементе yandex:related - 50
Количество ссылок на другие ресурсы в элементе yandex:related - 30
Количество элементов item 1000
Размер RSS-канала - 15 МБ
Далее для настройки турбо-страниц добавить адрес в Источник в Яндекс Вебмастер. Дождаться окончания проверки.
Не забываем подключить счетчики аналитики.
Предварительно для проверки турбо-страницы можно использовать инструмент «Отладка».