Эта заметка может пригодиться для тех, кому некогда разбираться с особенностями формирования турбо-страниц, а сделать нужно «вчера».
Простейший фид для текстовых страниц создать достаточно легко.
Нужно создать страницу с пустым шаблоном примерно такого содержания:
<?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>Веб-студия - агентство маркетинга - CapWeb</title>
<link>[(site_url)]</link>
<description>Рекламное агентство CapWeb - интернет-маркетинг полного цикла - веб-разработка - веб-дизайн - 8(968)000-10-11</description>
<turbo:cms_plugin>C125AEEC6018B4A0EF9BF40E6615DD1791</turbo:cms_plugin>
<turbo:analytics id="34865895" type="Yandex"></turbo:analytics>
<turbo:analytics id="UA-58169051-1" type="Google"></turbo:analytics>
<language>ru</language>
</channel>
</rss>
В настройках страницы нужно указать тип содержимого rss+xml.
Теперь что касается шапки фида.
В строки аналитики нужно вставить идентификаторы Яндекс.Метрики и Google Analytics.
С title, description все понятно — можно взять их с главной страницы вашего сайта или добавить фразу — turbo-страницы.
В тег link можно просто вбить адрес сайта, но этот вариант менее гибкий, хотя при переходе на https или смене доменного имени так или иначе нужно будет править адреса в базе.
Рассмотрим параметры Ditto. start и total определяют начало и конец выборки. Если документов более 500, лучше создать несколько страниц с фидами по 500 в каждом. Это связано с ограничениями Яндекса yandex.ru/dev/turbo/doc/rss/quota-docpage/
В этом примере я выбираю документы из ветки «Услуги», id родителя 3595, помимо документов в ветке есть ссылки, поэтому использую параметр where, задающий тип документа. Как вариант можно задать также номер шаблона, если в фиде нужно выбрать, например, все товары, хотя Яндекс рекомендует для товаров использовать YML-фид вместо RSS. Параметры глубины выборки, отображения отключенных для показа в меню и отключенных для публикации могут задаваться в зависимости от особенностей ваших веток.
[!Ditto? &start=`0` &total=`500` &parents=`3540` &depth=`1` &tpl=`tpl.turbo-m` &language=`english-UTF8` &display=`all` &total=`all` &showInMenuOnly=`0` &showPublishedOnly=`1` &sortBy=`pubdate` &sortDir=`ASC` &where=`template=8`!]
Обратите внимание на английский язык в языковых настройках сниппета. Это не опечатка, а необходимость для правильности формата даты.
Теперь что касается шаблона элементов RSS-канала tpl.turbo.
≺item turbo="true"≻
≺title≻[+pagetitle+]≺/title≻
≺link≻https://capweb.ru[!urlturbo? &id=`[+id+]`!]≺/link≻
≺turbo:topic≻[+pagetitle+]≺/turbo:topic≻
≺turbo:source≻https://capweb.ru[!urlturbo? &id=`[+id+]`!]≺/turbo:source≻
≺pubDate≻[+editedon:date=`%a, %d %b %Y %H:%M:%S`+] +3000≺/pubDate≻
≺turbo:content≻
≺![CDATA[
≺header≻
≺h1≻[+pagetitle+]≺/h1≻
≺/header≻
[+content+]
{{turbo-add}}
≻≺/turbo:content≻
≺/item≻
Чанк turbo-add содержит все, что рекомендует Яндекс: кнопку звонка, кнопки соцсетей, форму обратной связи и т. д. Примеры есть в справке Яндекса.
≺button formaction="tel:+7(123)456-78-90"
data-background-color="#5B97B0"
data-color="white"
data-primary="true"≻Заказать столик≺/button≻
≺div data-block="widget-feedback" data-stick="false"≻
≺div data-block="chat" data-type="whatsapp" data-url="https://whatsapp.com"≻≺/div≻
≺div data-block="chat" data-type="telegram" data-url="http://telegram.com/"≻≺/div≻
≺div data-block="chat" data-type="vkontakte" data-url="https://vk.com/"≻≺/div≻
≺div data-block="chat" data-type="facebook" data-url="https://facebook.com"≻≺/div≻
≺div data-block="chat" data-type="viber" data-url="https://viber.com"≻≺/div≻
≺/div≻
≺p≻Наш адрес: ≺a href="#"≻Nullam dolor massa, porta a nulla in, ultricies vehicula arcu.≺/a≻≺/p≻
≺p≻Фотографии — https://capweb.ru/lookbook.html≺/p≻
Вот как это упрощенно сделано у меня:
≺button formaction="tel:+8(968)000-10-11"
data-background-color="#5B97B0"
data-color="white"
data-primary="true"≻Позвонить≺/button≻
≺div data-block="widget-feedback" data-stick="false"≻
≺div data-block="chat" data-type="whatsapp" data-url="https://api.whatsapp.com/send?phone=79101405090"≻≺/div≻
≺div data-block="chat" data-type="viber" data-url="https://viber://chat?number=79101405090"≻≺/div≻
≺div data-block="chat" data-type="vkontakte" data-url="https://vk.com/capweb"≻≺/div≻
≺div data-block="chat" data-type="facebook" data-url="https://www.facebook.com/capweb"≻≺/div≻
≺/div≻
Если в число перебираемых Ditto документов входит главная страница, пригодится мой сниппет для избавления от /index.html. Возможно, у вас эта задачка решена лучше, но я применил такой костыль.
Код сниппета urlturbo:
≺?php
//$s = (!empty($_GET['id']) && is_numeric($_GET['id'])) ? (int) $_GET['id'] : $s;
$s = (isset($id)) ? $id : $modx-≻documentIdentifier;
$s = (int)$s;
$do=$modx-≻getDocument($s);
if(($s==1)|($s==3070)) echo ''; else //echo '/'.$modx-≻getDocument($s)["alias"].'.html';
echo "/".$do["alias"].".html";
?≻
Если таких сложностей в вашем случае нет, адрес в ссылке задается стандартно: capweb.ru/[~[+id+]~]
Когда нужно исключить отображение определенных страниц в фиде, просто переберите их в отдельном Ditto и используйте аналогичный чанк tpl.turbo с шаблоном, где прописано turbo=«false» вместо turbo=«true». Лишние элементы, конечно, из этого шаблона можно удалить.
Теперь адрес созданной xml-страница можно подгружать в качестве источника в Вебмастер, а также ввести необходимые настройки: загрузить логотип, заполнить название, описание, идентификаторы счетчиков. Обратите внимание на настройки ленты. Они применяются ко всему фиду, поэтому если у вас интернет-магазин и вы хотите, например, включить ленту для информационных страниц и отключить для товарных, нужно использовать RSS-фид для одного типа страниц и YML — для другого.
Цитата из переписки с Яндексом:
2) Турбо-версии информационных страниц сайта следует формировать с помощью RSS-канала (https://yandex.ru/dev/turbo/doc/quick-start/articles-docpage/ ), а карточки товаров — с помощью YML (https://yandex.ru/dev/turbo/doc/quick-start/markets-docpage/ ). Вы можете сформировать Турбо-версию лишь для отдельных страниц сайта, а для остальных страниц оставить обычную версию.
3) Увы, но изменить надпись на данной кнопке не получится. Возможно, такая функция появится в будущем.
При загрузке фида возможны три варианта: «Без ошибок», «Ошибка обновления», «Предупреждение обновления».
Для отладки есть кнопки «Подробнее» (показывает номера строк фида с ошибками, позволяет открыть страницу в режиме отладки), «Перепроверить источник».
Сергей CapWeb 06.10.2019 16:14 #
Алексей Либер 06.10.2019 23:16 #
Сергей CapWeb 06.10.2019 23:56 #
Алексей Либер 07.10.2019 01:49 #
Далее. Разработка и поддержка сайтов на новой версии движка происходит быстрее в силу того что сама админка работает быстрее, есть множество дополнений (например просмотр кода элемента кликом по правой клавише), а также снимает головную боль по поводу написания дополнений вроде вашего urlturbo, ибо есть такая замечательная штука как SEO Strict URLs раз, и &urlScheme=`full` в DocLister — два.
Ну и касательно вызова Ditto у вас: showPublishedOnly, showInMenuOnly и start и так по умолчанию имеют эти значение, а также у вас дважды написан параметр total.
В целом целиком и полностью поддерживаю мысль о том, что не всегда стоит гнаться за обновлениями. Тем не менее есть вещи которые просто устаревают морально. Вы же явно не будете пользоваться CMS Etomit, верно?)
Сергей CapWeb 07.10.2019 11:52 #
Алексей Либер 07.10.2019 15:26 #
Сергей CapWeb 07.10.2019 20:51 #
Если ума не хватает не оценивать людей по критериям, отличным от знания последней версии Evo, может не стоит и гадить в комментах?
Алексей Либер 07.10.2019 21:21 #
На личности я не переходил, это сделали вы год назад. Людей никогда и не по каким критериям я не оценивал и не оцениваю.
О 2014 годе написал не я, а вы изначально.
И еще и еще раз. То, что вы делитесь своими решениями — это очень круто и хорошо! Но я вас прошу все же задуматься об актуальности онных, только и всего)