Делаем свой RSS-канал

Делаем свой RSS-канал

После серии статей о том, что такое RSS, у многих владельцев сайтов, у которых нет RSS (а таких не так уж и мало, как могут думать некоторые), может возникнуть желание заполучить его себе:-) В этой статье я хочу перечислить способы организации RSS-канала для своего сайта. Начиная с самых простых способов и заканчивая сложными.

Изначально нужно быть уверенным, что вы знаете о том, что RSS-документ – это, по сути своей, обычный файл, в котором специальным образом в виде текста описаны те или иные новости (или статьи). В итоге понятие «у меня (у моего сайта) есть RSS-канал» будет выражаться на практике в виде интернет адреса к этому самому документу (у меня на блоге это, к примеру, адрес: http://feeds.feedburner.com/devezoterik). Ваши же читатели, имея этот адрес, в дальнейшем смогут следить за изменениями в этом файле с помощью специальных программ.

Использование сторонних сервисов (блогов)

Способ, пожалуй, один из самых простых (не требует специальных знаний в области программирования, денежных затрат и т.д.), но при этом, как не парадоксально, он не плох. Можно использовать бесплатные сервисы, предоставляющие возможность вести свои блоги. Блоги или по-русски говоря «дневники», это чаще всего что-то вроде специфических домашних страниц (здесь можно более подробно об этом прочесть) :) . Во-первых, на всех таких серверах вам выдают ссылку на RSS-документ (RSS-канал) вашего блога. Во-вторых, блоги имеют именно новостную структуру, т.к. все ваши записи в блоге идут последовательно, и каждая из них привязана к какой-либо дате, а это как раз то, что нам нужно.

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

Подобных сервисов для ведения своих блогов предостаточное количество в интернете. Одни из самых популярных и надежных это: www.blogger.com, my.ya.ru и livejournal.com (но вообще их просто несметное количество, отличающихся обычно немногим). На каждом из указанных мной сервисов есть русская версия с подробной помощью, описывающей, как «завести» свой блог.

Использование сервисов генерации RSS из обычных страниц

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

Конечно, можно воспользоваться первым способом: создать где-нибудь блог и дублировать в него новости со своего сайта (обычно это те новости, которые выводят на первой странице сайта). Но тогда ведь постоянно придется дублировать новости с сайта на блог… Предлагаемый же способ дает альтернативу для более прогрессивных/ленивых (иногда грань между этими понятиями бывает мала :) ) владельцев сайта.

Смысл заключается в том, чтобы использовать сервисы, которые будут сами следить за вашей страницей новостей и создавать каждый раз (при обновлении вами страницы) актуальный RSS-документ. О подробностях этого процесса я уже писал. Писал в первую очередь для тех, кто хочет следить за чужими сайтами, но никто нам не мешает посмотреть с другой точки зрения и следить за своим :) В итоге мы будет иметь ссылку на автоматически обновляемый RSS-документ, отражающий все новости на вашем сайте (правда, с задержкой около одного часа). Вам лишь нужно будет добавлять новости на свою страницу, не изменяя внутреннего форматирования html документа, чтобы сервисы «слежения» не потерялись на странице в поисках искомых новостей (чтоб узнать более подробную информацию, читайте статью по выше приведенной ссылке).

Создание RSS-документа вручную

Если по каким-либо причинам вы не хотите, чтоб RSS-документ обитал вне вашего сайта, и при этом вы не программист, остается еще один способ: создавать и обновлять этот документ у себя на сайте вручную (здесь уже понадобится опыт работы с html). В случае использования хостинга без поддержки скриптов и при не слишком частом появлении новостей (иначе вся эта затея будет очень утомительной), это вполне востребованный вариант.

Для создания и редактирования такого файла лучше всего использовать редактор Notepad++ или любой другой редактор, поддерживающий работу с кодировкой UTF-8 (без BOM). Документ должен быть в кодировке UTF-8 (без BOM). Вот пример того, как может выглядеть RSS-документ внутри (пример снабжен комментариями):

<?xml version="1.0" encoding="utf" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
	<!-- Заголовок RSS-ленты, обычно это название сайта -->
	<title>Мой сайт</title>
	<!-- Адрес сайта, которому принадлежит RSS-лента -->
	<link>http://www.moi_sait.ru</link>
	<!-- Описание RSS-ленты -->
	<description>Здесь вы сможете прочесть все последние новости сайта</description>
	<language>ru-ru</language>
	<!-- Эта секция (image) не обязательна -->
	<image>
		<!-- Ссылка на логотип для RSS-ленты -->
		<url>http://www.moi_sait.ru/logo.jpg</url>
		<!-- Заголовок логотипа -->
		<title>Логотип моего сайта</title>
		<!-- Адрес страницы, на которую должен будет попасть пользователь, кликнувший на логотип -->
		<link> http://www.moi_sait.ru</link>
	</image>
	<!--Дата последнего обновления документа. Дата должна быть именно в этом формате -->
	<lastBuildDate>Sun, 07 Jun 2009 04:00:11 +0300</lastBuildDate>
	<!-- Тэг item описывает один элемент (например, одну новость, или одну статью) -->
	<item>
		<!-- Краткий заголовок новости (или название статьи) -->
		<title>На сайте реализована поддержка RSS</title>
		<!-- Ссылка на страницу, посвященную этой новости (где может быть, к примеру, более широкое описание, а может, и такое же, как в RSS) -->
		<link>http://www. moi_sait.ru/news/1.htm</link>
		<!-- Более многословное описание новости (или содержимое статьи). Нужно заметить, что внутри можно использовать html тэги для более красивого форматирования, но в экранированном виде. В примере ниже используется тэг br (перенос строки) в экранированном виде "&lt;br /&gt;"-->
		<description>Ура, наконец-то теперь есть поддержка RSS!&lt;br /&gt;Долой e-mail рассылку!</description>
		<!-- Дата, к которой привязана новость (или дата публикации новости). Формат ее должен быть такой же, как и дата в тэге lastBuildDate -->
		<pubDate>Fri, 05 Jun 2009 10:39:18 +0300</pubDate>
		<!-- Необязательный тэг. Который может в себе содержать имя автора статьи или новости -->
		<author>Станислав &lt;stanislav@mail.com&gt;</author>
		<!-- Та же ссылка на страницу новости, что и в тэге link -->
		<guid isPermaLink="true">http://www. moi_sait.ru/news/1.htm</guid>
	</item>

	<!-- ...Здесь вы можете повторять секцию item для каждой из своих новостей по аналогии с элементом выше. Стоит лишь отметить, что не желательно, чтоб документ был слишком большим, обычно размещается от 10 до 20 элементов item... -->

</channel>
</rss>

Сохранять такой файл в большинстве случаев лучше под именем «rss.xml». Имя rss уже как традиция, но можно использовать и любое другое имя, а расширение xml просто желательно (в этой статье я не способен оговорить и объяснить всех деталей, так как тогда она была бы явно слишком большой :) ).

Автоматическая генерация RSS-документа на своем сервере

Этот способ подходит уже только для более искушенных веб-программированием людей. Если информация на сайте хранится в базе данных, а сами страницы являются серверными скриптами (а ля PHP), тогда становится возможным использовать самый автономный и не обременяющий в дальнейшем способ – создавать в автоматическом режиме RSS-документ при запросе оного пользователями. Описывать, как создать подобный скрипт, не имеет смысла, так как уже есть достаточно статей на эту тему с готовыми примерами и разъяснениям к ним. Вот одни из них (для языка PHP): ссылка 1, ссылка 2, ссылка 3, ссылка 4, ссылка 5.

Скромный посредник – Feedburner

И вот у вас, наконец, есть желанный адрес своей RSS-ленты. Казалось бы, чего еще можно желать? Конечно же, подробной статистики. Именно для этого и был создан сервис feedburner. Он позволит вам получать максимально возможную статистику, такую, например, как: количество подписчиков, распределение подписчиков по странам, степень интереса подписчиков к тем или иным новостям, возможность получать ваши RSS-новости по e-mail и т.д.

Основной принцип работы feedburner`а заключается в том, что он является посредником между вашим RSS-документом и читателями. Вы указываете feedburner`у адрес своей RSS-ленты, после чего feedburner сможет отдавать эту ленту уже из другого адреса (адрес будет таким: http://feeds.feedburner.com/ + имя вашей RSS-ленты). И если пользователи будут подписываться именно на адрес от feedburner`а, вы сможете в полной мере использовать все функции данного сервиса. При этом нужно помнить, что если кто-то подпишется на настоящий адрес вашего канала, вы не сможете получить прелести использования feedburner`а.

Эта схема поможет придать больше наглядности вышеописанному:

Как работает Feedburner

О настройках feedburner можно прочесть здесь. А так же здесь, здесь и здесь.

На самом деле, помимо всего прочего, этот сервис несет в себе еще один плюс. Так как все подписчики будут подписываться на RSS-ленту, находящуюся на feedburner, то вы можете, когда захотите, поменять адрес оригинального источника RSS-ленты (например, пробуя со временем разные способы создания RSS, описанные в этой статье, или, может, вы смените адрес сайта), не потеряв при этом всех своих подписчиков (они всегда будут видеть адрес ленты на feedburner, не подозревая о изменении ваших настроек). Если же люди подписывались бы на оригинальный адрес RSS-документа (без посредника в виде feedburner), то при его смене (вами) они перестанут получать новости, так как документа по старому адресу не будет существовать.

About ezoterik

Программист
This entry was posted in Разное and tagged , , . Bookmark the permalink.
  • http://joomla15.ru voland

    Интересная информация, надо как нить будет сделать нормальный RSS поток для Joomla

  • http://snowcore.net Snowcore

    Вот если бы feedburner еще поменьше глючил – тогда было бы круто!

  • http://dev.ezoterik.info ezoterik

    Snowcore, например? Я пока вроде только с одним глюком сталкивался, когда счетчик не адекватно работает и показывает что ноль подписчиков у ленты. Но это бывает редко и достаточно быстро проходит. А после того как гугл стал владельцем feedburner, думаю, это должны будут пофиксить (серьезная ж контора :) ).

  • http://www.mir44.ru Кострома

    может быть есть RSS в виде скрипта для PHP, а не сторонние сервисы ?

  • http://om222.blogspot.com/ om222

    Привет, Олег, буквально сегодня столкнулась со следующим: вывела общие записи гугль-ридера(в частности, рсс своего блога) в правую колону своей страницы на библ. сайте http://www.lib.kherson.ua/ukr-cop.htm
    и так мне это нравилось, пока не посмотрела случайно на эту красоту в ИЕ, которым обычно не пользуюсь. А там хрен знает какие кодировки, и наш веб-мастер глянул на код гугля и заверил меня, что ничего сделать нельзя, у нас сайт в другой кодировке (ну, нам же гугль не пример…)
    Вопрос: через что мне пропустить мой рсс, чтоб в гаджете гугля в ИЕ он корректно отражался и в ФФ тоже? Или это в принципе невозможно?

  • Дмитрий

    Всё гениальное просто)))

    Уже сделал!!!!УРА!

  • http://www.rsschannelwriter.com/ Sun

    Ой, почему столько времени тратить? Вместо этого пользуйтесь готовой программой.

  • http://dev.ezoterik.info ezoterik

    Кострома, в разделе «Автоматическая генерация RSS-документа на своем сервере» я вроде как привел приличное количество ссылок на подобные скрипты.

    Sun, если я правильно понял, то ваша программа нужна только в случае создания RSS-документа вручную (чтоб на выходе иметь готовый xml документ, который нужно самому закачивать на сайт). Если так, то нормального варианта скрипта с базой данных у себя на сайте она не заменяет (а это, если выбирать между способами, самый лучший и гибкий), да и сделать свой блог вроде как не так уж и сложно и долго (этот способ я описывал первым). В этом случае рекламный слоган «Ой, почему столько времени тратить?» не сильно уместен по отношению ко всей статье/теме. Для каких-то исключительных ситуаций может и удобная штука. Дороговато, правда, имхо, проще сделать свой блог и пропустить его RSS через Feedburner (в итоге имеем то же самое, только бесплатно и без надобности вручную куда-то закачивать xml документ и вообще как-либо заморачиваться с этим).

  • http://iandpoker.com/ Александр

    Оперативная консультация админа, супер! Очень приятная цветовая схема блога :)

  • http://electrogermany.blogspot.com/ Иван

    А как насчет статистики? Хочу узнать имэйлы подписчиков своего блога. Это возможно, эсли да, то как? Спасибо.

  • http://dev.ezoterik.info ezoterik

    Иван,
    Перейдите в закладку «Публикуй», потом слева находите пункт «Подписки по электронной почте». Внизу справа будет ссылка «Просмотреть информацию о подписчике». Там выдается список всех подписчиков на ваш rss потом через e-mail. Этот список можно там же экспортировать в csv.

  • Айгерим

    Добрый день!
    Спасибо за очень полезную и подробную статью!

    Я использовала этот метод: http://www.caseclub.ru/articles/webrss.html

    Все работает, но трудность со ссылкой на подробную новость. Я прописываю в поле link обычную ссылку-все работает, а когда такую ссылку: http://www.site.com/index.php?p=razdel_more&id5=8712&id1=5 – не работает. Что делать?

  • http://dev.ezoterik.info ezoterik

    Айгерим, я подозреваю, что это дефект того скрипта который вы используете. Первое, что приходит в голову, это проблема (я правда не совсем понял что значит обычная и не обычная ссылка, поэтому только предполагаю) связанная с амперсантами в адресе. По стандартам, строго говоря, его положено в ссылке (именно в HTML коде, когда прописывается, куда ссылаться должен некий текст) писать не как просто &, а & (хотя сомнительно, что из-за этого прямо работать ничего не будет, опять же симптомов неработоспособности я не знаю, поэтому сложно предполагать). Еще проблема с амперсантами может появляться на этапе их сохранения в вашу базу данных, это уже проблема не корректности самого php скрипта, или же при выводе ссылок в скрипте не делается их экранирование (которое приводилобы обычный амперсант к &). Я ссылки на разные готовые скрипты приводил как пример, и не изучал их. Но вы можете мне написать на email (в разделе «О сайте» есть мои контакты) и я вам помогу, чем смогу.

  • Аноним

    Интересная информация! Кое что взял на заметку…