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

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

Гугль

Архивы

Как сделать 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