Настройка Турбо страниц для Яндекса (Готовое решение)
Долго разбирался как настроить Турбо страницы для Яндекса. Много разного мануала нашел, в итоге решил поделиться тем, что у меня получилось. Не судите строго.
Может кто-то что-то подскажет, как реализовать проще или что-то улучшить. Может кому-то помогут мои наработки.
Рейтинга не хватило разместить в разделе Готовые решения или Пошаговые инструкции, оставляю в Вопросах.
1) Создаем Шаблон, я назвал его TurboYandex.
2) Код шаблона:
7) В коде шаблона:
8) В настройках web-мастера яндекса указываем ссылку на наш ресурс turborss.xml
Я делал это для статейного раздела на сайте. Вот как это выглядит в поиске:

Соответственно захламлять и ставить турбо страницы на все, я не советую, лучше вывести так горячие товары, новости, акции или услуги сайта, но это не точно)
Жду критики и конструктивных комментариев.
Может кто-то что-то подскажет, как реализовать проще или что-то улучшить. Может кому-то помогут мои наработки.
Рейтинга не хватило разместить в разделе Готовые решения или Пошаговые инструкции, оставляю в Вопросах.
1) Создаем Шаблон, я назвал его TurboYandex.
2) Код шаблона:
<!--?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>[[++site_name]]</title>
<link>[[++site_url]]</link>
<description>[[*description]]</description>
<language>ru</language>
[[!pdoPage?
&parents=`4`
&tpl=`tpl.turborss`
&tvPrefix=`tv.`
&includeTVs=`cover,rubric`
]]
</channel>
</rss>3) Код чанка tpl.turborss<item turbo="true">
<link>{$_modx->config.site_url ~ $id | url}</link>
<title>{'!rssText' | snippet : [ 'cnt' => ( $longtitle ?: $pagetitle ) ]}</title>
<pubDate>{$publishedon | date : 'D, d M Y G:i:s +0300'}</pubDate>
<turbo:content>
<![CDATA[
<header>
<figure>
<img src="{$_modx->config.site_url ~ $id | resource : 'cover' | phpthumbon : 'w=640'}" />
</figure>
<h1>{($longtitle ?: $pagetitle)}</h1>
</header>
{'!rssCDATA' | snippet : [ 'cnt' => ( $id | resource : 'content' | replace : '"assets/' : ('"' ~ $_modx->config.site_url ~ 'assets/') ) ]}
]]>
</turbo:content>
</item>4) Код сниппета rssText:<?php
if(empty($cnt)) return '';
$output = str_replace( [ '&', '<', '>', '"', '\'' ], [ '&', '>', '<', '"', '\'' ], html_entity_decode($cnt) );
return $output;5) Код сниппета rssCDATA:<?php
if(empty($cnt)) return '';
$output = preg_replace( '/<a\s.*class="pseudo".*>(.+)<\/a>/U', '$1', $cnt );
$output = preg_replace( '/<a\s.*><\/a>/', '', $output );
return $output;6) Создаем ресурс, тип содержимого ему задаем XML и устанавливаем для него наш созданный шаблон TurboYandex. URL я задал для него turborss.xml и заморозил.7) В коде шаблона:
&parents=`4`
&tpl=`tpl.turborss`
&tvPrefix=`tv.`
&includeTVs=`cover,rubric`Задаем своего родителя, нужные TV и параметры. И соответственно их подправляем в чанке tpl.turborss8) В настройках web-мастера яндекса указываем ссылку на наш ресурс turborss.xml
Я делал это для статейного раздела на сайте. Вот как это выглядит в поиске:

Соответственно захламлять и ставить турбо страницы на все, я не советую, лучше вывести так горячие товары, новости, акции или услуги сайта, но это не точно)
Жду критики и конструктивных комментариев.
Комментарии: 21
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Поблагодарил автора!!))
Делайте через кешируемый pdoResources и добавьте &limit, а то по умолчанию у Вас 10 ресурсов только выведется.
И коль уж Вы используете для картинки вывод через resource:
..., а TV rubric не используете вовсе, уберите из вызова includeTVs — в этом смысла нет (только увеличивает нагрузку).
Один вопрос возник у меня: как реализовать похожие записи в tpl.turborss. pdoNeighbors не получилось заставить работать. Есть ли какие нибудь решения тут? получается pdoNeighbors мы запускаем внутри pdoResources.
Покажите как выыводите.
card.tpl
card.tpl
И еще важно:
turbocard.tpl
'id' => $id,
'limit' => '3',
'tvPrefix' => '',
'includeTVs' => 'image1',
'tplWrapper' => '@INLINE {$prev}{$next}',
'tplPrev' => '@FILE elements/chunks/turbocard.tpl',
'tplNext' => '@FILE elements/chunks/turbocard.tpl',
]}
"
Подскажите пожалуйста этот код нужно добавлять в Сниппет: pdoNeighbors или в шаблон?
В текст статьи по этому коду:
уходит экранированный текст, где все тэги «побиты»
Подскажите, что я сделал не так )
и вызовом
При добавлении её в resources — генерирует только ее...(
Что может быть?