Познавательный блог  

Гугль

Архивы

Как сделать RSS канал на своём сайте.

Совсем недавно меня заинтересовало как можно на своем собственном сайте сделать RSS канал. Поковырявшись по великим просторам интернеров я нашел пару мануалов и стандартов, которые помогли мне в этом.

Движок сайта у меня самописный, поэтому и RSS пришлось писать ручками. В большинстве готовых CMS, RSS канал уже встроен или встраивается как дополнение.

Но мы не ищем легких путей. Поэтому поехали.

Для начала я создал файл rss.php, который будет генерировать ленту новостей. Поскольку RSS является подмножеством XML, то и PHP файлом отдавать ленту как-тоне солидно, поэтому в файле .htaccess мы дали понять серверу, что наш файл должен работать как rss.xml. То есть, реально файл работает под именем rss.php, а вызывается под дополнительным псевдонимом rss.xml.

RewriteEngine on
RewriteRule ^rss.xml$ rss.php

Для того, чтобы у нас не только имя файла было XML, но и сервер отдавал его клиенту как XML файл, мы напишем в наш файл rss.php строчку волшебную.

header('Content-type: application/xml');

Теперь наш RSS поток будет выглядеть точно, как XML файл.

Далее по пунктам опишем наш код.

echo("<?xml version=\"1.0\" encoding=\"windows-1251\"?>\r\n\r\n");

echo("<rss version=\"2.0\"
xmlns:content=\"http://purl.org/rss/1.0/modules/content/\"
xmlns:wfw=\"http://wellformedweb.org/CommentAPI/\"
xmlns:dc=\"http://purl.org/dc/elements/1.1/\"
xmlns:atom=\"http://www.w3.org/2005/Atom\"
xmlns:sy=\"http://purl.org/rss/1.0/modules/syndication/\"
xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\">
\r\n\r\n");

Объявляем и описываем стандарты XML. Нам это не интересно.

echo("<channel>\r\n");
echo("<title>www.freee.su - Коллекция бесплатного софта.</title>\r\n");
echo("<link>" . _ADD_URL_ . "rss.xml</link>\r\n");
echo("<description>Бесплатный софт - Коллекция бесплатного софта. Freee.Su. Свежие версии бесплатных программам. Freeware.</description>\r\n");
echo("<copyright>© Freee.Su," . date("Y") . "</copyright>\r\n");
echo("<language>ru</language>\r\n\r\n");
echo("<url>" ._ADD_URL_ . "img/logo.gif</url>\r\n");
echo("<title>www.freee.su - Коллекция бесплатного софта.</title>\r\n");
echo("<link>" ._ADD_URL_ . "rss.xml</link>\r\n");
echo("</image>\r\n\r\n");

Всё что между тегами <channel> и <image> относится к названию Вашего будущего канала,

Тег <title> содержит заголовок Вашей RSS-рассылки. Он может повторять название сайта; <link> — ссылка на главную страницу Вашего сайта; <description> — краткое описание рассылки; <language> — язык; <copyright> — соответственно Ваши копирайты ("все права защищены" и тому подобное); <author> — автор, то есть Вы.

От <image> до </image> сведения о логотипе Вашего сайта: <url> — ссылка на логотип; <title> — альтернативный текст у логотипа; <link> — адрес страницы, на которую перейдёт получатель рассылки, щёлкнув по логотипу.

Предпочтительный размер логотипа 88*31 точку — как у стандартного счётчика, максимальный — 144*400. Тип файла картинки — GIF, JPEG или PNG. Этот логотип будет отображаться в читалке у получателей Вашей рассылки и им будет легче вспомнить, кому же она принадлежит.

Если у Вас пока нет логотипа такого размера — можете просто смело выкинуть весь блок от <image> до </image>, и добавить его потом, когда нарисуете такой логотип.


$news_query = mysql_query("select news_id, subject, text, translit, added_by, date from news where `on` = 1 order by date desc limit "._NEWS_ON_PAGE_);
while(list($news_id, $subject, $text, $news_translit, $added_by, $date)=mysql_fetch_row($news_query))
{
$text = str_replace("\n", "<br>", $text);
$date_link = date("Y/m/d/", $date);
$date_string = date('r', $date);


echo("<item>\r\n");
echo("<title>".$subject."</title>\r\n");
echo("<link>"._ADD_URL_ . $date_link . $news_translit .".html</link>\r\n");
echo("<description><![CDATA[".$text."]]></description>\r\n");
echo("<pubDate>".$date_string."</pubDate>\r\n");
echo("<guid isPermaLink=\"true\">"._ADD_URL_ . $date_link . $news_translit .".html</guid>\r\n");
echo("<dc:creator>".$added_by."</dc:creator>\r\n");
echo("</item>\r\n\r\n");
}

Далее, информация между тегами <item> и </item> — это и есть новости. Большинство тегов идентичны разобранным выше, с той разницей, что они относятся уже не ко всему каналу, а к конкретной новости: <title> — заголовок новости. Чем сочнее он будет, тем больше вероятность, что новость прочитают и по заголовку кликнут; <link> — ссылка на страницу, которую описывает новость; <description> — собственно, сама новость. Она должна убеждать, что её не зря прочитали, и ещё больше стимулировать нажать на ссылку; <guid> — идентификатор новости, нужный, чтобы отличить одну новость от другой. Сюда лучше всего записать тот же адрес, что и в теге <link>; <dc:creator> — автор новости, не обязательно. Все остальные теги можно не трогать.

И естественно, XML файл нужно закрыть закрывающими тегами.

echo("</channel>\r\n");
echo("</rss>\r\n");

Как видите, ничего сложного здесь нет. Дальше вам необходиом отладить скрипт и разместить его в корне или не в корне вашего сайта.

У меня в корне лежит файл rss.php, а вызывается он http://www.freee.su/rss.xml и http://www.freee.su/rss.php.

Комментарии

Комментарий от Николай [ Октябрь 14, 2009, 06:31 ]

Отличная статья!

Комментарий от AV [ Ноябрь 28, 2009, 22:05 ]

не понял что за «.$subject.» и «._ADD_URL_ . $date_link . $news_translit .»
можно детальнее?

Комментарий от admin [ Ноябрь 29, 2009, 11:40 ]

$subject — заголовок новости. а «._ADD_URL_ . $date_link . $news_translit . » — это ссылка, код из моего движка.

Комментарий от Сергей [ Январь 15, 2010, 04:48 ]

Интернет ресурс web-bandit.net со модулями DLE, стилями. У нас можно скачать скрипты для ucoz, java скрипты, скрипты для вконтакте бесплатно. Web-bandit.net — каталог бесплатных файлов в помощь веб-мастеру. А также у нас можно скачать иконки для сайта, бесплатный клипарт, dle шаблоны, dle модули и много другого.

Комментарий от Борис [ Август 14, 2010, 18:54 ]

Интернет блог для общения компьютерных специалистов в Молдове. Поговорим про интернет-технологии, написание софта в Приднестровье. Программирование. Операционные системы. Сайтостроительство, web-дизайн, хостинги в ПМР.. Itpmr.ru — Форум для общения IT специалистов в Приднестровье.

Комментарий от Сергей [ Сентябрь 5, 2010, 21:36 ]

Интернет сайт с порхождениями игр, читами и кодами. Классный сайт для фанатов сетевых игр. Все секреты игр. Добро пожаловать на All4eats.ru! Читы для таких игр как: GTA SA Multiplayer, GTA IV / GTA 4, Counter Strike 1.6, Counter Strike: Source, Call of Duty 4.

Комментарий от Станислав [ Октябрь 19, 2010, 12:11 ]

Рецепты салатов и закусок — Лучшие рецепты блюд — Множество различных рецептов горячего, супов, гарниров, салатов, пирогов, тортов, закусок

Комментарий от takprosto [ Декабрь 13, 2010, 11:56 ]

Тег только закрытый, а открывающий не видать

Комментарий от Ильмир [ Декабрь 24, 2010, 17:44 ]

Спасибо за драгоценный урок!!!

Комментарий от Павел [ Январь 29, 2011, 04:19 ]

А как сделать чтобы выпуск вышел только в rss или только на сайте, а в rss не было? Или если сайт меняешь или редактируешь, чтобы повторно новости не отсылались???

Комментарий от Danis 李 [ Июнь 20, 2011, 11:10 ]

Супер. Очень юзефул в сео искусстве)

Комментарий от сергей [ Ноябрь 13, 2011, 13:11 ]

СНИМАЮ ШЛЯПУ !!!

Комментарий от Dmitry [ Март 17, 2012, 22:20 ]

Выдает ошибку:
Warning: mysql_query() [function.mysql-query]: Access denied for user ‘apache’@’localhost’
Нужно прописывать доступ к базе?

Комментарий от Сергей [ Май 21, 2012, 10:49 ]

Вообще ничего не понял. Надо будет прочитать раз 10, может дойдет

Написать комментарий








Поиск по сайту

Страницы

Свежие записи

Гугль

Мета

Счетчики


Rambler's Top100

Рубрики

  Разработка и дизайн — StvPromo.ru