вторник, 6 декабря 2011 г.

Генерация произвольного RSS для Xpages

Есть, конечно, в Domino такой шаблон - "RSS Feed Generator" - с помощью нескольких кликов можно создать генератор RSS-подписки для указанной базы данных. В результате при заходе через браузер на эту базу отображается список доступных RSS-подписок - можно скопировать нужную ссылку и подписаться на нее в своем любимом клиенте для чтения RSS.
НО
Слишком уж не прозрачно все это... Захотелось разобраться :) Чтобы самостоятельно можно было генерировать произвольную подписку из любой базы + загружать в читалку RSS адрес главной страницы сайта, а не специальную ссылку на RSS-подписку. Для начала очень полезно изучить этот документ: Спецификация RSS 2.0
В итоге нам в простом случае нужно сгенерировать XML-документ следующего формата:

Content-Type: text/xml; charset=windows-1251
<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005">
<channel>
<title>Заголовок канала. Этот текст будет отображаться при добавлении канала</title>
<link>Ссылка на "родительский" сайт для данной подписки</link>
<description>Описание канала вцелом</description>
<language>ru</language>
<pubDate>Дата публикации данных в канале (Wed, 30 Nov 2011 09:03:49 GMT)</pubDate>
<item> # открываем конкретную запись новости
<link>ссылка на полную версию новости</link>
<description>текст, который отобразится в читалке новостей</description>
<pubDate>Дата публикации новости (Wed, 30 Nov 2011 05:45:04 GMT)</pubDate>
<title>Заголовок новости</title>
<author>Может быть указан автор новости</author>
</item> # закрываем конкретную запись новости
</channel> # "закрываем" канал
</rss> # "закрываем" RSS

Соответственно, для генерации такого файла создаем в базе Lotus Notes агент: Trigger = On Event + Agent list selection, Target = None. Назовем агент, например, "rssagent". Сам текст агента по сути имеет такой вид:

Print({Content-Type: text/xml; charset=windows-1251})
Print({<?xml version="1.0" encoding="windows-1251"?>})
и т.д.

Адрес ссылки для "скармливания" в любимую RSS-читалку: <http-путь до вашей базы>/rssagent&openagent
Чтобы для читалки можно было использовать не такую ссылку, а просто адрес главной страницы, то на странице должен быть в тэге <head> дополнительный тэг:

<link rel="alternate" type="application/rss+xml" title="<некий заголовок>" href="<ссылка для вызова агента>">


Чтобы добавить атрибут <link> в XPages, нужно сделать следующее:
Открыть в дизайнере нужную XPage, перейти на вкладку All Properties, в Ресурсах добавить headTag с названием "link" и далее к этому тэгу добавить нужные атрибуты:




Всё готово :)

P.S. По идее можно в базе по шаблону "RSS Feed Generator" сгенерировать рассылку и потом на XPage добавить соответствующую ссылку в тэг <link>. Тоже вариант. Ну а если уж хочется иметь полный и тотальный контроль за генерируемыми новостями, то тогда пишем агента, который был описан в данной статье.

Комментариев нет:

Отправить комментарий