Во время разработки одного из заказов (известие о его окончании и подробный список правок скоро будет опубликован) нам была поставлена задача генерации RSS лент для разных типов объектов самописной CMS заказчика. После раздумий и анализа приводимых в Интернете материалов задача была выполнена
Итак, каким же образом можно генерировать RSS ленты там, где отсутствуют готовые RSS генераторы?
На самом деле, все достаточно просто. RSS лента — это файл XML, приведенный к определенному стандарту, распознаваемому браузерами, программами-читалками лент и прочими приблудами
Этот файл, как и любой другой можно генерировать средствами PHP и наполнять данными из MySQL.
Структура файла имеет следующий вид:
<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
<channel>
<title>RSS Название_сайта</title>
<link>Адрес_сайта</link>
<description>Описание_канала</description>
<pubDate>Дата_ленты</pubDate>
<lastBuildDate>Дата_ленты_еще_раз:)</lastBuildDate>
<generator>Название нашего скрипта</generator>
<copyright>Copyright год название сайта</copyright>
<managingEditor>контактный_адрес_сайта</managingEditor>
<webMaster>контактный_адрес_вебмастера_сайта</webMaster>
<language>ru</language>
<image>
<url>адрес_логотипа_сайта</url>
<title><![CDATA[Название_сайта]]></title>
<link>адрес сайта/</link>
</image>
<item>
<title>название_заголовка_новости_1</title>
<description><![CDATA[текст_новости_1]]></description>
<link>ссылка_на_новость_1</link>
<guid isPermaLink="true">еще_раз_ссылка_на_новость_1</guid>
<pubDate>дата_новости_1</pubDate>
</item>
<item>
<title>название_заголовка_новости_N</title>
<description><![CDATA[текст_новости_N]]></description>
<link>ссылка_на_новость_N</link>
<guid isPermaLink="true">еще_раз_ссылка_на_новость_N</guid>
<pubDate>дата_новости_N</pubDate>
</item>
</channel> </rss>
Как видите, структура ленты достаточно простая и понятная. Достаточно правильно написать шапку и концовку и в цикле сгенерировать <item></item> чтобы все работало. Из подводных камней необходимо обратить внимание на формат дат в RSS лентах.
Для приведения дат в лентах к правильному формату необходимо выполнять преобразование
$pubDate = date(DATE_FORMAT_RFC822, $source_date); где $source_date — дата в формате UNIX_TIMESTAMP.
Соответственно, если необходимо получить даты из базы данных MySQL и подставить их в ленту, в текст SQL запроса необходимо включить конструкцию UNIX_TIMESTAMP(struct.date) AS source_date, где struct.date — поле в таблице.
Линки по теме:
- http://www.webmagazine.biz/articles/rss-2-0-lenta-na-php-5.html
- http://www.internet-technologies.ru/articles/article_358.html
- http://ru.wikipedia.org/wiki/RSS
- http://cyber.law.harvard.edu/rss/rss.html
Как всегда, буду рад ответить на возникающие вопросы трудящихся по e-mail alex_krylov@inbox.ru или по ICQ 286-658-375

Авторизация




Комментирование временно закрыто.
