RSS ленты стали очень распространенным способом узнать об обновлении того или иного сайта. Сейчас практически на любом сайте есть такая лента, как сделать её на своем сайте посредством PHP я сейчас расскажу.
RSS (Really Simple Syndication (RSS 2.x))— XML-файл, предназначенный для описания лент новостей, анонсов статей, изменений в блогах и т. п..
Вот лента моего сайта:
<?xml version="1.0" encoding="windows-1251" ?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <title><![CDATA[7ion blog]]></title> <category><![CDATA[Разработка программного обеспечения]]></category> <link>http://7ion.ru</link> <copyright>© 7ion.ru 2009</copyright> <description><![CDATA[7ion blog]]></description> <lastBuildDate>Mon, 14 Jun 2010 11:16:47 +0300</lastBuildDate> <language>ru</language> <pubDate>Mon, 14 Jun 2010 11:16:47 +0300</pubDate> <docs>http://blogs.law.harvard.edu/tech/rss</docs> <managingEditor>Spin7ion@mail.ru (Alexander Semion)</managingEditor> <webMaster>Spin7ion@mail.ru (Alexander Semion)</webMaster> <item> <title><![CDATA[Простая защита от MySQL injection]]></title> <link>http://7ion.ru/index.php?q=news&a=14</link> <description><![CDATA[MySQL инъекции очень распространенная и наиболее опасная ошибка. С её помощью можно сделать много пакостей: от неавторизованного входа, до дефейса. Данная уязвимость позволяет злоумышленику выполнять произвольные команды на сервере базы данных. О предмете статьи написанно много, часто пишут о фильтрации переменных регулярными выражениями кои просто увеличивают время обработки, я расскажу вам о самом простом и наиболее безопасном способе защиты.]]></description> <category><![CDATA[Разработка программного обеспечения]]></category> <pubDate>Wed, 02 Jun 2010 13:38:18 +0300</pubDate> <guid>http://7ion.ru/index.php?q=news&a=14</guid> </item> </channel> </rss> |
RSS фид состоит из нескольких основных тегов:
<rss> - обязательный тег, обозначает границы ленты
<channel> - обязательный тег, обозначает границы канала, в одной ленте может быть несколько каналов
<title>-заголовок ленты или анонса
<category>-категория анонса
<link>-ссылка на страницу где находится анонс
<copyright>-кому принадлежит фид
<description>-описание ленты или текст анонса
<lastBuildDate>-дата последнего создания
<language>- язык ленты
<pubDate>-дата публикации
<item>-обязательный тег, обозначает границы анонса
Вы наверное заметили конструкцию <![CDATA[SomeText]], она позволяет вставлять тексты на нестандартных языках и теги
Для создания ленты я использую класс найденный на просторах гугля, и немного подредактированный мной для прохождения валидности.
class CRss
|
Данный класс позволяет создавать ленту с помощью нескольких строк в основном коде.
Для начала заполним основные поля
$Rss= new Crss();//создадим класс
//заполним поля $Rss->Title="My super blog"; $Rss->Link="http://7ion.ru"; $Rss->Copyright="© Super blogger 2009"; $Rss->Description="OWNED blog"; $Rss->Category = "Блог самого лучшего человека"; $Rss->Language="ru";
$Rss->ManagingEditor="superman@superblog.ru (Alexander Semion)"; $Rss->WebMaster=" superman@superblog.ru (Alexander Semion)"; $Rss->LastBuildDate=date("r"); $Rss->PubDate=$Rss->LastBuildDate; |
Затем выведем шапку RSS
$Rss->PrintHeader(); |
У меня каждый анонс берется из базы данных, это не всегда самое лучшее решение, т.к. нет кэширования, но оно достаточно для мало нагруженных систем.
$result = mysql_query("SELECT * FROM `posts` ORDER BY `createtime` DESC"); while($line=mysql_fetch_array($result)) { $Rss->PrintBody($line['title'],"http://superblog.ru/i?post={$line['postid']}&r=rss",$line['intro'],$Rss->Category,date("r",strtotime($line['createtime']))); } |
Заметьте что знак & обязательно должен быть кодирован как &.
И наконец завершим фид
$Rss->PrintFooter(); |
Как видите создать свою ленту очень просто.
Удачного анонсирования.