Делаем свой 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), то при его смене (вами) они перестанут получать новости, так как документа по старому адресу не будет существовать.

Автор

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

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

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

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

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

  • Дмитрий

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

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

  • Sun

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

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

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

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

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

  • Иван,
    Перейдите в закладку «Публикуй», потом слева находите пункт «Подписки по электронной почте». Внизу справа будет ссылка «Просмотреть информацию о подписчике». Там выдается список всех подписчиков на ваш 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 — не работает. Что делать?

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

  • Аноним

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

  • Геннадий Карпинский

    У меня возникла проблема. Поменял хостинг и FeedBurner стал выдавать ошибку. Короче, лента не работает. Тех.поддержка отмазывается. не хочет помогать. А я в программировании ни два ни восемь. Как мне наладить RSS -ленту. Может даже сменить FeedBurner.
    Выдаёт такую ошибку:

    This page contains the following errors:
    error on line 8 at column 6: XML declaration allowed only at the start of the document
    Below is a rendering of the page up to the first error.

    • Судя по всему у вас там какой-то мусор в rss коде появился в начале документа, которого быть не должно там (ошибки скриптов, к примеру). Напишите оригинальный адрес rss ленты, гляну.

      • Геннадий Карпинский
        • У вас на всех страницах сайта, в том числе и в rss ленте, в начале html документа стоит по 8 пустых переносов строк (посмотрите, например, код первой страницы в браузере). Их нужно убрать. Вероятнее всего вы (или тот кто вам настраивал сайт) меняли шаблон у wordpress и случайно эти переносы вставили. Или же на сервере какие-то странные настройки (хотя подобных проблем из-за настроек сервера я никогда не видел). Т.е. дело не в feedburner, как только вы исправите эту проблему у себя на сайте, все будет нормально работать и в прежней rss ленте.

          • Геннадий Карпинский

            Только как это сделать? Я в этих строках и переносах вообще не разбираюсь. Куда это мне заходить? И если это на всех страницах… Как это могло случиться?

          • Геннадий Карпинский

            То есть, я должен их сдвинуть в верх до самого конца?
            А где это можно сделать?