getResources. Создание RSS-ленты
Последнее обновление not available | История страницы | Улучшить эту страницу | Сообщить о проблеме
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$204 per month—let's make that $500!
Learn moreСайты, которые публикуют новые статьи, записи в блоге или новости, обычно хотят дать посетителям способ оставаться в курсе. RSS-ленты решают эту задачу просто. В этом кратком руководстве описано, как создать собственную RSS-ленту в MODX Revolution с дополнением getResources. Если вы ещё не установили getResources, сначала установите его.
Создание ресурса RSS¶
В менеджере MODX создайте новый ресурс.
- Задайте заголовок (например: «Мои последние записи в блоге на sitename.com») и псевдоним (например: feed).
- Измените шаблон на «(пустой)», то есть без шаблона. Появится диалог с вопросом, уверены ли вы. Нажмите «Да».
- Перейдите на вкладку «Настройки страницы» и найдите поле «Тип содержимого». Откройте его и установите значение RSS.
- Теперь можно добавить информацию о канале (глобальные сведения о ленте) в содержимое страницы. Если вы используете TinyMCE или другой визуальный редактор, отключите его на вкладке «Настройки страницы», чтобы редактор не испортил разметку.
- Вставьте следующий код в поле «Содержимое»:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>[[*pagetitle]]</title>
<link>[[~[[*id]]? &scheme=`full`]]</link>
<description>[[*introtext:cdata]]</description>
<language>[[++cultureKey]]</language>
<ttl>120</ttl>
<atom:link href="[[~[[*id]]? &scheme=`full`]]" rel="self" type="application/rss+xml" />
[[getResources?
&tpl=`rssItem`
&parents=`29,41`
&depth=`5`
&limit=`10`
&includeContent=`1`
&includeTVs=`1`
&showHidden=`0`
&hideContainers=`1`
]]
</channel>
</rss>
Предупреждение для Articles
Если вы используете getResources для вывода записей блога из дополнения Articles, установите &showHidden=1. Ресурсы Articles считаются скрытыми.
Логика простая. Сначала вы объявляете версии xml и rss (а также «расширения» rss, в данном случае atom и dublin core), аналогично объявлению HTML Doctype. Затем начинается блок channel, где вы указываете сведения о ленте и сайте, который она представляет.
- Title: заголовок ленты, который отображается в заголовке браузера или RSS-ридере. Здесь используется pagetitle.
- Link: полная (абсолютная) ссылка на RSS-ленту.
- Description: краткое описание сайта для блока информации о ленте. Фильтр cdata оборачивает поле introtext в теги cdata, чтобы разметка не сломала ленту.
- Language: двухсимвольный cultureKey, который можно задать для контекста и который указывает язык ленты.
- Ttl: time to live, время в минутах, в течение которого ридер может кешировать ленту перед повторной загрузкой.
- Atom link to self.
На этом информация о канале закончена. Далее идёт вызов getResources, который выбирает элементы на глубине до 5 уровней от родителей 29 и 41, не более 10 ресурсов. Также подключаются содержимое и все TV, связанные с ресурсом.
Сохраните ресурс.
Если вы откроете ленту сейчас, она ещё не будет работать корректно, потому что шаблон для элементов ленты ещё не создан.
Настройка tpl getResources для элементов¶
В вызове getResources мы ссылаемся на чанк «rssItem», поэтому создайте его.
<item>
<title>[[+pagetitle:htmlent]]</title>
<link>[[~[[+id]]? &scheme=`full`]]</link>
<description>
[[+introtext:default=`[[+content:ellipsis=`600`]]`:cdata]]
</description>
<pubDate>[[+publishedon:strtotime:date=`%a, %d %b %Y %H:%M:%S %z`]]</pubDate>
<guid isPermaLink="false">[[~[[+id]]? &scheme=`full`]]</guid>
<dc:creator>
[[+createdby:userinfo=`fullname`]]
</dc:creator>
</item>
Вы можете изменить этот чанк под свои задачи и добавить или убрать нужные поля. Этот шаблон элемента включает:
- pagetitle ресурса (с htmlentities на всякий случай);
- ссылку на ресурс;
- описание: introtext, если оно заполнено, иначе первые 600 символов content (подробнее о выходных фильтрах). Снова применяется фильтр cdata, чтобы HTML-теги не сломали ленту;
- дату публикации ресурса;
- GUID / ссылку на ресурс;
- имя автора (из поля createdby).
После сохранения чанка вернитесь к ленте: содержимое должно подгрузиться. Добавьте ссылку на RSS на сайте и в заголовке через тег link:
<link rel="alternate" type="application/rss+xml" title="Follow this website with RSS" href="[[~52]]" />
Замените 52 на ID вашего RSS-ресурса. Браузер распознает ленту и покажет иконку в панели навигации.
Что дальше¶
Вы можете доработать решение дальше. Несколько идей:
- Если у автора нет отдельной учётной записи в менеджере MODX, создайте текстовую TV с его именем и используйте её вместо имени из поля createdby.
- Сейчас лента забирает все ресурсы внутри родителей, включая категории, заглушки и другие страницы, которые вы не хотите показывать. Их можно отфильтровать через TV и параметр &tvFilter в вызове getResources.
- Изучите спецификацию RSS и решите, какие ещё поля добавить в ленту.
Устранение неполадок¶
Лента ничего не показывает? Откройте исходный код страницы. Если содержимое есть, но не разбирается корректно, скорее всего, ошибка в синтаксисе. Проверьте ленту через W3C Feed Validator и исправьте ошибки.
Эта страница частично основана на сообщении Ryan Thrash на форуме.
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$204 per month—let's make that $500!
Learn more










