getResources::Создание RSS-ленты

Сайты, которые публикуют новые статьи, блоги или новости, скорее всего хотят дать своим посетителям способ получать обновления. RSS-каналы - простой способ сделать это. Этой краткой инструкциии будут описаны подробности о том, как сделать свой собственный RSS-канал, используя MODX Revolution и дополнение getResources. Если вы еще не установили getResources, пожалуйста, сделайте это сначала.

Создание ресурса с RSS

В вашей админке MODX создайте новый ресурс.

  1. Во-первых, дайте ему название (например: "Мои последние блоги на sitename.com") и псевдоним (например: feed).
  2. Затем, измените шаблон на пустой - "(empty)" или другими словами, сделайте ресурс вообще без шаблона. Вы получите всплывающее окно с вопросом, уверены ли вы, что хотите изменить шаблон. Нажмите кнопку Да.
  3. Перейдите на вкладку Настройки и найдите поле "Тип содержимого". Откройте его и выберите RSS.
  4. Теперь вы готовы указать информацию о канале (другими словами, глобальная информация о вашей ленте) в содержимое страницы. Если вы используете TinyMCE или аналогичный текстовый редактор, отключите его на вкладке Настройки, чтобы предоствратить странное поведение в коде.
  5. Вставье следующий код в поле Содержимое ресурса:
    
    <?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>getResources::Создание RSS-ленты</title>
        <link>https://modx.by/rtfm/modx-add-ons/getresources/getresourcesprimeryi/getresourcessozdanie-rss-lentyi</link>
        <description></description>
        <language>ru</language>
        <ttl>120</ttl>
        <atom:link href="https://modx.by/rtfm/modx-add-ons/getresources/getresourcesprimeryi/getresourcessozdanie-rss-lentyi" 
            rel="self" type="application/rss+xml" />
    
    </channel>
    </rss>
    

Что это делает? Все просто. Сначала вы объявляете версию xml и rss (а также "расширения" в RSS, в данном случае Atom и Dublin Core), подобно тому, как вы объявляете HTML Doctype. Затем начинается блок канала, в котором вы предоставляете информацию о вашей ленте и сайт, который ее предоставляет.

  • Title: название канала, которое будет отображаться в строке браузера или RSS-читалки. В данном случае используется pagetitle ресурса.
  • Link: полная/абсолютная ссылка на RSS-канал.
  • Description: краткое введение о вашем сайте, который будет отображаться в информации о ленте. Выходной фильтр cdata выводит теги cdata вокруг вводного текста для того, чтобы вывод не сломал канал.
  • Language: два символа cultureKey, которые могут быть установлены в контексте, а также используется для указания языка, на котором транслируется канал.
  • Ttl: время жизни; другими словами, время в минутах, на которое канал может быть закеширован читалкой перед тем, как обновить его снова.
  • Atom ссылка на самого себя

Это все, что касается информации о канале. Дальше вы видите вызов getResources, который получает элементы на 5 уровней в глубину от родителей 29 и 41 с ограничением в 10 ресурсов. Кроме того, он включает в себя содержимое и все переменные шаблона, которые могут быть связанны с ресурсами.

Сохраните ваш ресурс.

Если вы хотите зайти на ваш канал сейчас, то он не будет работать как должен, потому что мы еще не создали шаблон для вывода элементов.

Настройка шаблонов для элементов в getResources

В сниппете getResources мы ссылаемся на чанк под названием "rssItem", так давайте же создаим его.


<item>
  <title></title>
  <link>https://modx.by/</link>
  <description>
    
  </description>
  <pubDate></pubDate>
  <guid isPermaLink="false">https://modx.by/</guid>
  <dc:creator>
      
  </dc:creator>
</item>

Вы можете изменить этот чанк как вам будет угодно и включить ту информацию, которую вы хотете (или не включать). Этот шаблон включает пункты:

  • Заголовок (pagetitle) ресурса (с применением htmlentities на всякий случай);
  • Ссылка на ресурс;
  • Описание, которое берется из introtext, если там есть какие-то данные или первые 600 символов основного содержимого, если поле intotext пустое. (Почитать больше о выходных фильтрах здесь). Также опять применяется фильтр cdata, чтобы предотвратить нарушение целостности ленты из-за html-тегов;
  • Дата, когда ресурс был опубликован;
  • GUID/ссылка на ресурс;
  • Имя автора (берется из поля createdby).

Когда вы сохранили чанк и вернулись к вашему каналу, вы должны увидеть загружаемое содержимое и что все хорошо открывается. Убедитесь в том, что вы поствили ссылку на ваш RSS канал на своей сайте где-нибудь, а также пропишите его в заголовке страницы с помощью тега:

<link rel="alternate" type="application/rss+xml" 
title="Follow this website with RSS" href="" />

Обязательно замените 52 на ID вашего ресурса с RSS. Это позволит браузеру определить канал и показать оранжевую иконку в панели навигации.

Что теперь...

Конечно, все это вы можете настроить. Несколько идей, как начать:

  • Если автора нет или не хотите использовать собственный аккаунт в админке MODX, сделайте текстовую переменную шаблона с его именем и ссылкой вместо имени в поле createdby.
  • Сейчас канал выбирает все ресурсы в родителях.. который также может включать категории, плейсхолдеры страниц или другие страницы, которые не хотелось бы включать. Вы можете фильтровать их путем использования переменных шаблона и параметра &tvFilter в вызове getResources.
  • Посмотрите спецификацию RSS и там вы найдете больше информации о том, что можно включить в ваш канал.

Поиск и устранение неисправностей

Ваш канал ничего не показывает? Попробуйте посмотреть исходный код страницы. Если там содержимое есть, но оно не обрабатывается должным образом, вероятно где-то есть ошибки в синтаксисе. Используйте W3C Validator для проверки вашего канала и выявления ошибок.

Эта страница была частично основана на этой форумной записи Райана Трэша.

  • Реклама

  • Недавние публикации

  • Недавние комментарии

© 2011 — 2014 MODX Беларусь
По всем вопросам обращаться в компанию Alroniks Experts