[создаем feed для RSS-рассылки]материал подготовил: Михаил Брод 23.06.2004
Тема нашего сегодняшнего разговора — как самому сделать RSS-рассылку. Для этого нам опять придется немного вернуться к теме формата RSS, а затем разобраться, как превратить ваши новости в информационный поток, доступный для подписчиков, где и как его разместить, как представить его на своем сайте… В общем, вопросов много. Поэтому начнем с самого первого — какой формат RSS выбрать для своей рассылки.
Если вы читали наши статьи или знакомились с технологией RSS на других сайтах, то вы знаете, что сегодня существует семь подвидов стандарта — от RSS 0.90 до RSS 2.0. Прочитав значительное количество статей, посвященных этим разновидностям, могу сказать, что многие разработчики в большей степени склоняются к использованию стандарта RSS 2.0, как наиболее развитому. Самый полный сравнительный анализ версий можно увидеть в статье «Что такое RSS» (автор Mark Pilgrim), а стандарт RSS 2.0 опубликован на сайте Technology at Harvard Law.
RSS-рассылка — это файл, созданный в формате RSS. именно этот файл «вбирают» в себя программы-агрегаторы, когда вы, подписавшись на рассылку, подключаетесь к новостному каналу. Тем, кто знаком с XML, понять формат рассылки (этот файл еще называют «фид» — feed) будет несложно. Фид «строится» из предопределенных строительных элементов — тегов, располагаемых в предопределенной последовательности. Разберем, какие теги используются в создании фида. Для примера возьмем фид проекта Softkey.info, который предлагает своим читателям подписку на новости и статьи.
Первые две строки — служебные. В одной описывается стандарт XML, во второй — стандарт RSS, используемые для создания фида. Кроме того, в описании версии RSS указаны источники пространства имен, применяемые в данном стандарте. больше в фиде никакой служебной информации нет — все остальное относится непосредственно к рассылке.
В стандарте 2.0 вся рассылка обрамляется тегом <channel>, а сами новости вложены внутрь этого тега (в версии 1.0 новости не входят в состав тега <channel>). Вот как будет выглядеть начало фида по версии 2.0:
В описании канала (рассылки) — три обязательных параметра:
title — название вашего канала либо ресурса. По нему будут ссылаться на ваш ресурс.
link — ссылка на источник, соответствующий данному каналу
description — краткое описание канала
Кроме обязательных, в состав описания могут входить и необязательные элементы. К ним относятся:
Language — язык, на котором вы пишете свои новости.
copyright — авторские права (ваши, но — на английском)
managingEditor — электронный адрес издателя — наверное, ваш.
webMaster — электронный адрес веб-мастера.
pubDate — дата публикации (требование к формату описано в RFC 822).
generator — может использоваться, если канал формируется с помощью какой-либо программы.
image — описывает картинку, которая может показываться агрегаторами для данного канала. Формат изображения — GIF, JPEG или PNG. В свою очередь, состоит также из нескольких тегов, описывающих ссылку на картинку и некоторые иные параметры.
skipHours и skipDays предназначены для агрегаторов. В этих тегах указывается, в какое время и какие дни «появление» агрегаторов нежелательно.
Есть еще ряд тегов, которые могут использоваться в описании заголовка канала, но они применяются довольно редко и поэтому о них лучше прочитать в описании стандарта.
Файл в формате RSS называется «Фид» (feed)
Следующий блок канала — сами сообщения. Каждое сообщение обрамляется элементом item. Все остальные элементы, относящиеся к новости, содержатся внутри него. Элементов item в вашем фиде будет столько, сколько новостей вы будете в нем размещать. Все они, входящие в item, являются необязательными, тем не менее желательно, чтобы присутствовал хотя бы один элемент title или description. итак, какие элементы могут включаться в описание новости?
Как уже отмечалось, в состав описания новости могут включаться элементы:
title — заголовок записи.
link — ссылка на запись.
Description — аннотация либо полная публикация.
category — описывает категорию, к которой можно отнести новость.
pubDate — дата публикации документа. Может содержать будущую дату, по отношению к текущей. В этом случае агрегаторы должны пропускать такую новость.
Есть еще ряд элементов, которые могут входить в описание, но сейчас мы на них останавливаться не будем.
Теперь посмотрим, как все, что было описано выше, выглядит в реальном фиде (точнее, в его небольшой части).
<item> <title>Firefox — подготовка к выходу</title> <link>http://www.softkey.info/news/news2788.php</link> <description>Специалисты Mozilla Foundation объявили о выходе предварительной версии браузера Firefox.</description> <enclosure url=»http://www.softkey.info/images/upload/17569/19313183df09869c99c9f7f6041280c3.gif» length=»1845″ type=»image/gif»/> <category>Новости мира ПО</category> <pubDate>Fri, 11 Jun 2004 13:46:30 +0400</pubDate> </item> </channel> </rss>
Как видите, ничего особенно сложного в это нет. Если вы делаете RSS-файл вручную, вам остается добавлять в него очередные новости, удаляя, по мере необходимости, старые. Добавлять новости лучше в начало файла — тогда это действительно будет похоже на ленту новостей, в которой свежие новости постепенно вытесняют старые.
В фиде может быть неограниченное количество сообщений
Но новости, а тем более, новостные каналы, пишутся, в первую очередь, для посетителей (и почитателей) вашего проекта. Следовательно, нужно дать им возможность подписаться на ваши новости. Для этого на странице новостей (хотя можно и на другой — главное, чтобы они были заметными) нужно разместить специальные кнопки. Их придумано много, но чаще всего на сайтах, публикующих RSS-новости, размещают такую кнопку:
или такую:
Вторая кнопка предназначена для программ-агрегаторов. При нажатии на нее происходит подписка на ссылающуюся ленту новостей. При этом используется специально разработанный протокол — feed.
Почему же для этого не используется обычный http-протокол? На это есть две причины — протокол http не может определять действия, а также не умеет запускать через ваш браузер программу-агрегатор для осуществления подписки. Этот протокол вызывается поверх иных сетевых протоколов — http, ftp и ссылок на локальные файлы. Примеры записи этого протокола:
Если вы ведете несколько рассылок RSS-новостей или, помимо своей, предлагаете вашим посетителям возможность подписаться на еще какие-либо рассылки, то на кнопку подписки можно «навесить» дополнительное меню с перечнем доступных подписок. Для этого можно использовать свободно распространяемую программу quickSub.
Но можно не ограничиться размещением кнопки или меню на своем сайте. Вы можете включить свою рассылку в список, формируемый некоторыми специальными проектами — службами синдикации. Одна из наиболее известных служб — NewsIsFree. Количество рассылок, включенных в базу данных, превышает шесть с половиной тысяч, в их числе есть и российские. Из российских проектов возможность подписаться не только на свои рассылки предлагает «Яндекс».