RSS 2.0 лента на PHP 5
RSS — семейство XML-форматов, предназначенных для описания лент новостей, анонсов статей, изменений в блогах и т. п. Информация из различных источников, представленная в формате RSS, может быть собрана, обработана и представлена пользователю в удобном для него виде специальными программами-агрегаторами. Обычно с помощью RSS 2.0 даётся краткое описание новой информации, появившейся на сайте, и ссылка на её полную версию. Интернет-ресурс в формате RSS называется RSS-каналом или RSS-лентой или RSS-фидом. Практически все популярные современные браузеры поддерживают RSS каналы: Safari, Maxthon, Mozilla Firefox, Mozilla Thunderbird, Opera, Microsoft Internet Explorer начиная с 7-й версии. Я не буду останавливаться на истории формата, скажу лишь что существуют версии 0.91, 1.0 и 2.0, причем не совместимые между собой. Крайне не рекомендую вам использовать версию 0.91, потому что умная Netscape 5 января 2006 года удалила с сайта my.netscape.com файл rss-0.91.dtd, ссылки на который были размещены в большом количестве трансляций формата RSS версии 0.91. Это событие привело к сбою некоторых онлайновых и офлайновых агрегаторов, так как потоки, ссылающиеся на этот DTD стали невалидными. Мы же рассмотрим самый последний формат на момент написания этой статьи - RSS 2.0.
Пример формата RSS 2.0 и описание тегов
По своей сути RSS напоминает обычный XML файл:
<?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. |
Конечно же тут приведены не все теги стандарта RSS, но я вас уверяю что этого больше чем достаточно для создания фида, ну а для особо интересующихся дам ссылку на спецификацию RSS 2.0.
Реализация на PHP 5
Я не стал городить классы и шаблоны, а сделал все достаточно просто:
<?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>Мой супер блог</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;
?>
Как видите все получилось довольно просто. Чтобы увидеть результат можно просто ввести в браузере Opera 9 адрес фида: http://mysite.com/rssfeed.php. Также можно сообщить браузеру о существовании фида, добавив в блок <head> страниц вашего сайта строку:
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://mysite.com/rssfeed.php" />
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Вася
13.01.2008
Постоянная ссылка (Permalink)
Спасибо за статью! Я теперь сделал у себя в блоге RSS ленту, только возник вопрос: как вы сделали отображение количества комментариев в фиде через FeedBurner?
Денис
30.01.2008
Постоянная ссылка (Permalink)
Спасибо за отличную статью. Всегда обращаюсь к ней если забываю те или иные теги RSS-канала.
Виктор
06.01.2009
Постоянная ссылка (Permalink)
На моём форуме есть закрытые разделы. Делаю RSS постов форума. Как сделать авторизацию по RSS? Чтобы ленту могли смотреть только те, кто имеет доступ в закрытые разделы? В RSS-ридерах есть поля Логин и Пароль, непонятно только, КАК они их передают скрипту.
Влад
18.11.2009
Постоянная ссылка (Permalink)
Очень помогла статья - у меня была ошибка с выводом даты в Яндекс-Виджете. Спасибо.
Andreafoene And...
03.02.2021
Постоянная ссылка (Permalink)
По моему, у кого-то буквенная алексия :)
---
Извиняюсь, что ничем не могу помочь. Надеюсь, Вам здесь помогут. скачать fifa, скачать фифа и fifa 15 скачать фифа
Otto Osborn
15.06.2022
Постоянная ссылка (Permalink)
The acronym RSS stands for Really Simple Syndication. RSS works similarly to a broadcast system in that it distributes the updated information to various receivers. RSS is a technology that allows users to receive regularly updated web information. XML code is used to produce RSS feeds. The first node declares the feed's channel, and title, as well as links to the feed's website, a description, and language. Within the XML code, you can also incorporate an image (such as a logo). This section of the code is kept static. Have you tried MADFUT on PC? If not, download Hill Climb Racing - Available on PC play and enjoy the game.