Тема нашего сегодняшнего разговора — как самому сделать RSS-рассылку. Для этого нам опять придется немного вернуться к теме формата RSS, а затем разобраться, как превратить ваши новости в информационный поток, доступный для подписчиков, где и как его разместить, как представить его на своем сайте... В общем, вопросов много. Поэтому начнем с самого первого — какой формат RSS выбрать для своей рассылки.
Если вы читали наши статьи или знакомились с технологией RSS на других сайтах, то вы знаете, что сегодня существует семь подвидов стандарта — от RSS 0.90 до RSS 2.0.
Прочитав значительное количество статей, посвященных этим разновидностям, могу сказать, что многие разработчики в большей степени склоняются к использованию стандарта RSS 2.0, как наиболее развитому. Самый полный сравнительный анализ версий можно увидеть в статье «Что такое RSS» (автор Mark Pilgrim), а стандарт RSS 2.0 опубликован на сайте Technology at Harvard Law.
Файл в формате RSS называется «Фид» (feed)RSS-рассылка — это файл, созданный в формате RSS. Именно этот файл «вбирают» в себя программы-агрегаторы, когда вы, подписавшись на рассылку, подключаетесь к новостному каналу. Тем, кто знаком с XML, понять формат рассылки (этот файл еще называют «фид» — feed) будет несложно. Фид «строится» из предопределенных строительных элементов — тегов, располагаемых в предопределенной последовательности. Разберем, какие теги используются в создании фида. Для примера возьмем фид проекта Softkey.info, который предлагает своим читателям подписку на новости и статьи.
<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0" xmlns="/redir.php?url=backend.userland.com%2Frss2" xmlns:yandex="/redir.php?url=news.yandex.ru">
Первые две строки — служебные. В одной описывается стандарт XML, во второй — стандарт RSS, используемые для создания фида. Кроме того, в описании версии RSS указаны источники пространства имен, применяемые в данном стандарте. Больше в фиде никакой служебной информации нет — все остальное относится непосредственно к рассылке.
В стандарте 2.0 вся рассылка обрамляется тегом <channel>, а сами новости вложены внутрь этого тега (в версии 1.0 новости не входят в состав тега <channel>). Вот как будет выглядеть начало фида по версии 2.0:
<channel>
<title> SoftKey.info: Новости</title>
<link> /redir.php?url=www.softkey.info%26lt%3B%2Flink%26gt%3B%3Cbr%3E < description> Рассылка онлайнового издания Softkey.info< /description>
В описании канала (рассылки) — три обязательных параметра:
- title — название вашего канала либо ресурса. По нему будут ссылаться на ваш ресурс.
- link — ссылка на источник, соответствующий данному каналу
- description — краткое описание канала
Кроме обязательных, в состав описания могут входить и необязательные элементы. К ним относятся:
- Language — язык, на котором вы пишете свои новости.
- copyright — авторские права (ваши, но — на английском)
- managingEditor — электронный адрес издателя — наверное, ваш.
- webMaster — электронный адрес веб-мастера.
- pubDate — дата публикации (требование к формату описано в RFC 822).
- generator — может использоваться, если канал формируется с помощью какой-либо программы.
- image — описывает картинку, которая может показываться агрегаторами для данного канала. Формат изображения — GIF, JPEG или PNG. В свою очередь, состоит также из нескольких тегов, описывающих ссылку на картинку и некоторые иные параметры.
- skipHours и skipDays предназначены для агрегаторов. В этих тегах указывается, в какое время и какие дни «появление» агрегаторов нежелательно.
Есть еще ряд тегов, которые могут использоваться в описании заголовка канала, но они применяются довольно редко и поэтому о них лучше прочитать в описании стандарта.
В фиде может быть неограниченное количество сообщенийСледующий блок канала — сами сообщения. Каждое сообщение обрамляется элементом item. Все остальные элементы, относящиеся к новости, содержатся внутри него. Элементов item в вашем фиде будет столько, сколько новостей вы будете в нем размещать. Все они, входящие в item, являются необязательными, тем не менее желательно, чтобы присутствовал хотя бы один элемент title или description. Итак, какие элементы могут включаться в описание новости?
Как уже отмечалось, в состав описания новости могут включаться элементы:
- title — заголовок записи.
- link — ссылка на запись.
- Description — аннотация либо полная публикация.
- category — описывает категорию, к которой можно отнести новость.
- pubDate — дата публикации документа. Может содержать будущую дату, по отношению к текущей. В этом случае агрегаторы должны пропускать такую новость.
Есть еще ряд элементов, которые могут входить в описание, но сейчас мы на них останавливаться не будем.
Теперь посмотрим, как все, что было описано выше, выглядит в реальном фиде (точнее, в его небольшой части).
<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0" xmlns="/redir.php?url=backend.userland.com%2Frss2">
<channel>
<title>SoftKey.info: Новости</title>
<link>/redir.php?url=www.softkey.info%26lt%3B%2Flink%26gt%3B%3Cbr%3E
<item>
<title>Firefox — подготовка к выходу</title>
<link>/redir.php?url=www.softkey.info%2Fnews%2Fnews2788.php%26lt%3B%2Flink%26gt%3B%3Cbr%3E <description>Специалисты Mozilla Foundation объявили о выходе предварительной версии браузера Firefox.</description>
<enclosure url="/redir.php?url=www.softkey.info%2Fimages%2Fupload%2F17569%2F19313183df09869c99c9f7f6041280c3.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 и ссылок на локальные файлы. Примеры записи этого протокола:
feed:///redir.php?url=example.org%2Frss.xml%3Cbr%3E feed:/redir.php?url=example.org%2Frss.xml%3Cbr%3E feed:example.org/rss.xml
feed://ftp://user:password@ftp.host.com/path/index.xml
feed://file://\\server\share\index.xml
Если вы ведете несколько рассылок RSS-новостей или, помимо своей, предлагаете вашим посетителям возможность подписаться на еще какие-либо рассылки, то на кнопку подписки можно «навесить» дополнительное меню с перечнем доступных подписок. Для этого можно использовать свободно распространяемую программу quickSub.
Но можно не ограничиться размещением кнопки или меню на своем сайте. Вы можете включить свою рассылку в список, формируемый некоторыми специальными проектами — службами синдикации. Одна из наиболее известных служб — NewsIsFree. Количество рассылок, включенных в базу данных, превышает шесть с половиной тысяч, в их числе есть и российские. Из российских проектов возможность подписаться не только на свои рассылки предлагает «Яндекс».
Ссылки по теме
Статья получена: hostinfo.ru