среда, 20 марта 2013 г.

Что такое RSS и как самому сделать RSS для сайта


Если вы являетесь владельцем сайта и до сих пор не знаете, что такое RSS, то эта статья создана для вас. Мы живём в мире скоростей и огромного потока информации. Умение правильно ориентироваться в ней и уметь выбрать главное — это не очень просто. Зачастую чтобы найти нужную информацию, мы обходим кучу сайтов, пересматриваем десятки и сотни страниц, теряем много времени и трафика при этом. А ведь можно получить эту информацию напрямую в свой компьютер или на свой сайт. Для этого была разработана технология RSS. Что это такое?


RSS — это специальная категория XML формата для передачи (трансляции) анонсов новостей, статей, изменений и прочей оперативной информации с сайта. Обычно информация транслируется в укороченном виде со ссылкой на страницу первоисточника. Длина передачи устанавливается произвольно владельцем сайта. Источник называется RSS каналом, RSS фидом или RSS лентой.

В чём преимущества RSS? Во-первых, пользователь очень существенно экономит трафик и время, так как информация скачивается только самая последняя и нужная. Это очень важно, не правда ли? Зачем загружать страницу новостного портала, которая изобильно нагружена графикой, скриптами и flash анимацией, когда можно скачать всего несколько килобайт нужной информации. А теперь представьте, что вам необходимо получить самую свежую информацию с нескольких десятков сайтов. Сколько времени это займёт у вас? А с помощью RSS вы сможете получить её в единое целое в течение нескольких секунд. Во-вторых, RSS ленты можно транслировать на другие сайты, расширяя диапазон основного сайта и повышая тем самым его аудиторию.
На компьютере RSS ленты можно читать с помощью современных браузеров, которые поддерживают RSS формат. К ним относятся Mozilla Firefox, Opera и так далее. А можно использовать и специальные программы — RSS агрегаторы, которые собирают сами информацию из заданных RSS лент и предоставляют её пользователю в очень удобном виде. Как вариант можно ещё использовать и онлайн агрегаторы. Это специальные сайты, где пользователи могут также выбирать популярные RSS ленты и читать их. Как видите, выбор очень богат и эта технология стремительными темпами набирает популярность в Интернете благодаря своей оперативности и удобству. Поэтому она и называется RSS — Really Simple Syndication или По-настоящему Простое Получение Информации. В настоящее время последней версией RSS является версия RSS 2.0.
Как читать RSS вроде бы уже вам понятно, а как сделать RSS ленту у себя на сайте? Да очень просто. Необходимо создать специальную страницу в стандарте XML 1.0 и расположить её у себя на сайте. Можно рассмотреть это на примере, подразумевая, что сайт сделан на языке PHP и имеет базу данных MySQL для хранения новостей или статей.
Пример формата RSS 2.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>My News</title>
<link>http://mysite.com/</link>
<description>News from my family.</description>
<language>en-us</language>
<pubDate>Tue, 10 Jun 2006 04:00:00 GMT</pubDate>
 
<lastBuildDate>Tue, 10 Jun 2006 09:41:01 GMT</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>Weblog Editor 2.0</generator>
<managingEditor>editor@mysite.com</managingEditor>
<webMaster>webmaster@mysite.com</webMaster>
 
<item>
<title>My Birthday</title>
<link>http://mysite.com/blog/2006/mybirthday.php</link>
<description>I celebrate my birthday today!</description>
<pubDate>Tue, 01 Jun 2006 09:39:21 GMT</pubDate>
<guid>http://mysite.com/blog/2006/06/01.html#item1</guid>
</item>
 
<item>
<title>My new PC</title>
<link>http://mysite.com/blog/2006/mynewpc.php</link>
<description>I want to buy new PC.</description>
<pubDate>Tue, 27 May 2006 08:37:32 GMT</pubDate>
<guid>http://mysite.com/blog/2006/05/27.html#item1</guid>
</item>
</channel>
</rss>
Обязательные элементы канала
title Имя RSS канала. Оно например может совпадать с названием сайта.
description Краткое описание RSS канала.
link Ссылка на сайт, с которым связан канал.
Необязательные элементы канала (channel)
language Язык канала (en-us — Английский; ru — Русский).
copyright Сведения об авторстве на RSS канал.
managingEditor Email адрес ответственного за контент канала.
webMaster Email адрес ответственного за техническую часть публикации канала.
pubDate Дата публикации канала, в соответствии с Date and Time Specification of RFC 822.
lastBuildDate Время последней модификации канала в соответствии с Date and Time Specification of RFC 822.
category Одна или несколько категорий, к которым принадлежит канал.
generator Название программы, использованной для генерирования RSS канала.
docs Ссылка на файл документации подвида RSS, который был использован для создания канала.
ttl Ttl расшифровывается как ‘time to live’. Это число минут, в течение которых канал сохраняет свою актуальность.
image Используется для подключения графического файла (GIF, JPEG, или PNG), который будет показан вместе с RSS каналом. Имеет следующие параметры:
title — обычно тот же текст, что и в RSS title;
description — описание графического файла, которое будет показано, если файл не доступен;
link — ссылка на страницу, с которой связан канал;
url — URL на файл формата JPEG, GIF или PNG, который связан с RSS каналом;
width — ширина рисунка.
height — высота рисунка.
skipHours Число часов, в течение которых RSS ридеры могут не проверять канал на обновления.
skipDays Число дней, в течение которых RSS ридеры могут не проверять канал на обновления.
Обязательные элементы итема (item)
title Имя итема (новости, сообщения) RSS канала.
description Краткое описание итема.
link ссылка на страницу, содержащую полное описание события.
Необязательные элементы итема (item)
author Email адрес автора сообщения.
category Категория итема.
comments Ссылка на страницу с комментариями по итему.
enclosure Описывает медиа-объект, присоединенный к итему. Имеет следующие параметры:
url — ссылка на файл объекта;
length — размер файла в байтах;
type — тип файла, в соответствии со спецификацией MIME.
guid Уникальная строка, используемая для идетификации итема.
pubDate Дата публикации итема, в соответствии с Date and Time Specification of RFC 822.
Реализация на PHP 5 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
// Задаем формат даты
define('DATE_FORMAT_RFC822','r');
// Сообщяем браузеру что передаем XML
header("Content-type: text/xml; charset=windows-1251");
 
// Дата последней сборки фида
$lastBuildDate=date(DATE_FORMAT_RFC822);
 
echo <<<END
<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
<channel>
<title>mysite.com RSSFeed</title>
<link>http://mysite.com</link>
<description>Мой супер <a href="http://moroz.rv.ua/">блог</a></description>
<pubDate>$lastBuildDate</pubDate>
<lastBuildDate>$lastBuildDate</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>Weblog Editor 2.0</generator>
<copyright>Copyright 2006 mysite.com</copyright>
<managingEditor>editor@mysite.com</managingEditor>
<webMaster>webmaster@mysite.com</webMaster>
<language>ru</language>
END;
 
// В этом файле надо разместить подключение к базе данных
include_once("db.php");
 
// Модифицируйте запрос под вашу таблицу
$query = "SELECT name, anon, url, UNIX_TIMESTAMP(date) as pubdate
FROM news
WHERE visible=1
ORDER by date desc
LIMIT 0,10";
 
$res = mysql_query($query);
while ($row=mysql_fetch_array($res)) {
// Убираем из тайтла html теги и лишние пробелы
$title = strip_tags(trim($row['name']));
// С аноносом можно не проводить такие
// манипуляции, т.к. мы вставим его в блок CDATA
$anon = $row['annonce'];
$url = $row['uri'];
$pubDate = date(DATE_FORMAT_RFC822, $row['pubdate']);
echo <<<END
<item>
<title>$title</title>
<description><![CDATA[$anon]]></description>
<link>http://mysite.com/news/$url</link>
<guid isPermaLink="true">http://mysite.com/news/$url</guid>
<pubDate>$pubDate</pubDate>
</item>
END;
}
 
echo <<<END
</channel>
</rss>
END;
?>
Как видите все получилось довольно просто. Чтобы увидеть результат можно просто ввести в браузере  адрес фида: http://mysite.com/rssfeed.php. Также можно сообщить браузеру о существовании фида, добавив в блокстраниц вашего сайта строку:
1
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://mysite.com/rssfeed.php" />