RSS. Что это? Для чего это? Как это сделать?
Итак, что же такое RSS? Самый простой способ понять, что это - спросить у Википедии.
Находим там вот такой ответ.
RSS — семейство XML-форматов, предназначенных для описания лент новостей, анонсов статей, изменений в блогах и т. п. Информация из различных источников, представленная в формате RSS, может быть собрана, обработана и представлена пользователю в удобном для него виде специальными программами-агрегаторами.
В разных версиях аббревиатура RSS имела разные расшифровки:
Rich Site Summary (RSS 0.9x) — обогащённая сводка сайта;
RDF Site Summary (RSS 0.9 и 1.0) — сводка сайта с применением инфраструктуры описания ресурсов;
Really Simple Syndication (RSS 2.x) — очень простой сбор сводной информации.
Будем придерживаться последней расшифровки. Получается, что RSS - это ну Ооочень простой сбор сводной информации.
Зачем же нужен этот сбор для сайта? А нужен он для того, чтобы посетители сайта могли подписаться на новостную ленту в формате RSS и получать уведомления о всех обновлениях, произошедших на сайте не заходя при этом на сайт. При этом Пользователи смогут переходить по ссылке новости и прочитать ее целеком при желании, что уменьшает количество "отказов" (практически мгновенное закрытие страницы без дальнейших переходов) при посещении сайта, которые учитываются поисковиками, в частности Google.
Еще одним достоинством RSS новостной ленты является то, что пользователю не нужно вводить какой-либо информации о себе, как то почтовый адрес, как для почтовой подписки на новости.
Итак, вроде бы с преимуществами разобрались. Перейдем от теории к практике.
Что же нужно, чтобы создать свою новостную ленту для своего любимого сайта?
1. Знать структуру XML+RSS документа.
2. Знать HTML+PHP.
Первое можно поглядеть вот здесь на родном английском или вот тут на заграничном русском.
И выбрал для себя вот такую минимальную стуруктуру xml+rss документа:
< ?xml version="1.0" encoding="UTF-8" ? >
< rss version="2.0" >
< channel >
< title >Название Вашей ленты новостей< /title >
< link >Ссылка на Ваш сайта< /link >
< description > Краткое описание новостной ленты< /description >
< language >Язык ленты< /language >
< lastBuildDate >Дата последнего изменения Ленты новостей< /lastBuildDate >
< webMaster >Мыло веб-мастера сайта< /webMaster >
< copyright >Копирайт, он и в Африке копирайт< /copyright >
< image >
< url >Ссылка на логотип Вашего сайта
< link >Ссылка на Ваш сайт
< title >Название Вашего сайта
< /image >
< item >
< title >Заголовок новости< /title >
< link link >Ссылка на полную новость< /link >
< description >Краткое описание новости< /description >
< pubDate >Дата публикации новости< /pubDate >
< /item >
< /channel >
< /rss >
Я думаю из комментариев все ясно, поясню только непонятные на первый взгляд моменты.
1. Язык ленты - соответствует доменной зоне. Русский - ru.
2. Дата последнего изменения Ленты новостей и Дата публикации новости
Дата и время в RSS соответствуют спецификации RFC 822, за исключением того, что год может представляться двумя или четырьмя цифрами (последнее предпочтительно). Пример: "Sat, 07 Sep 2002 00:00:01 GMT".
Для генирации Даты последнего изменения ленты я использую php функцию date("r"). А для генирации Даты публикации новости при получении даты из базы использую функцию mysql DATE_FORMAT(data, '%a, %d %b %Y %T'), добавив к нему при выводе функцию php date('T'), чтобы получить временнУю зону, в которой находтся сервер.
3. В Кратком описании новости можно использовать html теги для форматирования, но при этом специальные символы нужно преобразовывать в html-сущьности. Это можно сделать с помощью php функции htmlspecialchars("html-text").
Ну, вот собственно и все особенности, о которых я хотел рассказать.
В итоге у меня получился вот такой простенький php код, который формирует новостную ленту сайта, на котором Вы сейчас находитесь.
< ?php
include "config.php"; // Настройки подключения к базе данных
$query="select date_format(data, \"%a, %d %b %Y %T\") as Pubdata, newDescribe, newTitle, newLink from articles order by data desc";
$res=mysql_query($query) or die ("< center >< b >ERROR: " . $query . "< /b >< /center >");
header("Content-Type: application/rss+xml; charset=utf8");//Говорим, что мы - RSS_XML
print"
< ?xml version=\"1.0\" encoding=\"UTF-8\" ? >
< rss version=\"2.0\" >
< channel >
< title>Лента новостей сайта< /title >
< link>http://rks.kh.ua< /link >
< description>Лента новотей нашего любимого сайта< /description >
< language>ru< /language >
< lastBuildDate>".date("r")."< /lastBuildDate >
< webMaster>info@rks.kh.ua< /webMaster >
< copyright>Кафедра РКС, 2012< /copyright >
< image >
< url >http://rks.kh.ua/img/logo/8f14e45fceea167a5a36dedd4bea2543.gif< /url >
< link >http://rks.kh.ua< /link >
< title >Официальный сайт кафедры Радиоэлектроники и компьютерных систем УИПА< /title >
< /image >
";
if($res) while($row = mysql_fetch_assoc($res))
{
print"
< item >
< title >".htmlspecialchars($row[\"newTitle\"])."< /title >
< link >http://rks.kh.ua/articles/".$row[\"newLink\"]."< /link >
< description >". htmlspecialchars($row[\"newDescribe\"])."< /description >
< pubDate >".$row[\"Pubdata\"]. " ". date("T").)."< /pubDate >
< /item >
";
}
print"
< /channel >
< /rss >
";
? >
Осталось указать в коде вашей странички, путь к вашему RSS+XML файлу.
Делается это одной строкой в секции
странички:
< link rel="alternate" type="application/rss+xml" href="./rss2_0.php" title="Лента новостей кафедры РКС УИПА" />
В итоге получается вот такая красивая лента новостей Вашего сайта:
В Opera
В FireFox
В Internet Explorer
Теперь можете смело добавлять кнопочку "Подписаться на RSS -рассылку" на свой сайт. Подписываемся на новости нашего сайта, чтобы быть в курсе последних событий нашей кафедры =)Подписаться на RSS -рассылку
Рубрика: Web programming
Авторы: Коваленко Н.А.
Опубликовано: 05.02.12 09:40