MODX. Пример создания rss в MODX, с подключением турбо-страниц Яндекса
Отредактировано: 02 Октября 2023
Турбо-страницы яндекса можно создать несколькими способами, один из них — технология Rss, которая подходит для сайта с небольшим количеством страниц. На этой странице разберемся как создавать rss ленту в MODX и оформим ее для выдачи в формате турбо-страниц.
Инструкция Яндекса по созданию турбо-страниц
Инструкция по созданию rss ленты для вывода турбо-страниц Яндекса в cmf Modx
- Создаём новый ресурс с подходящим названием, к примеру rss;
- Устанавливаем «пустой шаблон»;
- Ставим галочки «Скрыть из меню» и «Опубликован», указываем описание в поле description, к примеру — «Rss канал сайта [[++site_name]]»;
- На вкладке «Настройки» выбираем «Тип содержимого» — RSS;
- На вкладке «Настройки» отключаем использование HTML-редактора;
- В содержимое ресурса вставляем следующий код:
<?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> [[!pdoResources? &tpl=`tpl.rss` &parents=`0` &depth=`5` &limit=`300` &includeContent=`1` ]] </channel> </rss>
В вызове pdoResources указываем настройки подходящие для сайта на котором делается rss лента. Все аналогично настройке этого компонента на других страницах. Если у вас на сайте нет pdoResources можно также использовать getResources, это не критично. Обратите внимание, что в вызове сниппета указан лимит. Если его не указать, при слишком большом количестве файлов, система не сможет их обработать и будет показывать стандартный вывод элементов.
-
Создаем чанк с шаблоном для элементов rss ленты, в моем случае tpl.rss:
<item turbo="true"> <link>[[++site_url]][[+uri]] </link> <pubDate>[[+publishedon:date=`%a, %d %b %Y %H:%M:%S +0300`]]</pubDate> <turbo:content> <![CDATA[ <header> <h1>[[+pagetitle:replace=` == `]]</h1> </header> [[+content:replace=` == `]] ]]> </turbo:content> </item>
-
Просматриваем получившуюся страницу. При заходе по нужному адресу браузер предложит скачать файл, скачивайте и просматривайте через текстовый редактор, либо откройте нужный адрес с префиксом view-source:
view-source:https://www.site.ru/rss.rss
- Открываем Яндекс вебмастер, в разделе «Турбо-страницы» → «Источники» вставляем ссылку, проверяем валидатором и нажимаем добавить. Яндекс проверит файл, и в случае если ошибок нет выведет статус «Без ошибок». Если же он не понимает файл должным образом, выдаст комментарии, которые помогут исправить ошибку;
- Теперь надо привязать турбо-страницы к счетчикам. Счетчики Яндекс Метрики подтягиваются автоматически, но счетчики других систем надо добавить вручную. Идем в раздел в разделе Турбо-страницы → Общие настройки → Веб-аналитика. Копируем недостающие номера счетчиков и добавляем в соответствующие поля.
Так настраивается простейший вывод турбо страниц, но в большинстве случаев вам понадобиться вывод дополнительных полей. И в этом случае бывает удобно использовать шаблонизатор fenom. К примеру, добавим в турбостраницы вывод заглавного изображения:
{if $id | resource : 'image' != ''}
<figure>
<img src="{$_modx->config.site_url ~ $id | resource : 'image' | phpthumbon : 'w=640'}" />
</figure>
{/if}
Тут стоит немного пояснить ситуацию — если выводить поле с изображением не через id ресурса, то надо подключать вывод необходимого поля в вызове сниппета pdoResources. Но при подобной записи этого делать не обязательно.
Блок с хлебными крошками можно вывести так:
{set $parentIDs = $_modx->getParentIds($id) | reverse}
<div data-block="breadcrumblist">
{foreach $parentIDs as $parentId first=$first}
{if $first}
<a href="{$_modx->config.site_url}">{1 | resource : 'pagetitle'}</a>
{else}
<a href="{$_modx->config.site_url ~ $parentId | resource : 'uri'}">{$parentId | resource : 'pagetitle'}</a>
{/if}
{/foreach}
</div>
Собираем id всех родителей, переворачиваем получившийся массив, и в первой строке получившегося массива проставляем параметры главной страницы нужного сайта. При необходимости единицу надо заменить на соответствующий id главной страницы.
Полный код шаблона элемента для турбо-страниц Яндекса, оформленный под Modx
<item turbo="true">
<link>[[++site_url]]{$_modx->makeUrl($id)} </link>
<pubDate>[[+publishedon:date=`%a, %d %b %Y %H:%M:%S +0300`]]</pubDate>
<turbo:content>
<![CDATA[
<header>
<h1>[[+pagetitle:replace=` == `]]</h1>
{if $id | resource : 'image' != ''}
<figure>
<img src="{$_modx->config.site_url ~ $id | resource : 'image' | phpthumbon : 'w=640'}" />
</figure>
{/if}
{set $parentIDs = $_modx->getParentIds($id) | reverse}
<div data-block="breadcrumblist">
{foreach $parentIDs as $parentId first=$first}
{if $first}
<a href="{$_modx->config.site_url}">{1 | resource : 'pagetitle'}</a>
{else}
<a href="{$_modx->config.site_url ~ $parentId | resource : 'uri'}">{$parentId | resource : 'pagetitle'}</a>
{/if}
{/foreach}
</div>
</header>
[[+content:replace=` == `]]
]]>
</turbo:content>
</item>