Перед написанием RSS ленты на PHP, необходимо ознакомиться с ее структурой. Ниже предоставлена структура RSS ленты у версии формата RSS 2.0.
<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>Название RSS ленты</title>
<link>Ссылка на сайт ленты (ваш сайт)</link>
<description>Краткое описание ленты (3-4 предложения)</description>
<item>
<title>Название новости</title>
<link>Ссылка на новость в интернете</link>
<description>Сокращенный текст (описание) статьи, новости</description>
<author>Имя автора</author>
<pubDate>Дата публикации новости</pubDate>
</item>
...
<item>
<title>Название статьи </title>
<link>Ссылка на статью, новость в интернете</link>
<description>Описание</description>
<author>Имя автора</author>
<pubDate>Дата публикации</pubDate>
</item>
</channel>
</rss>
Пример использования:
rss.php
<?php header("content-type: application/rss+xml; charset=utf-8");
echo'<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Ubuntu-desktop.ru - RSS</title>
<link>http://'.$_SERVER['HTTP_HOST'].'/rss.php</link>
<managingEditor>liman324@yandex.ru (Alex)</managingEditor>
<description>Ubuntu, Kubuntu, Xubuntu, Debian, Lubuntu, программы, приложения, игры, Linux</description>';
include "connect.php"; // подключяемся к базе данных
$query = "SELECT * FROM blog ORDER BY blog_id DESC LIMIT 0,10"; // только последние 10 новостей
$result = mysql_query($query);
while($r = mysql_fetch_array($result)){
$id=$r['blog_id'];
$title= $r["name"];
$r['text']=htmlspecialchars_decode($r['text']);
$r['text'] = strip_tags($r['text']); //уберём все html элементы
$r['text'] = substr($r['text'], 0, 300); // показывать только первые 300 символов
$r['text'] = rtrim($r['text'], "!,.-"); //убедимся, что текст не заканчивается восклицательным знаком, запятой, точкой или тире
$r['text'] = substr($r['text'] , 0, strrpos($r['text'] , ' ')); // находим последний пробел и убираем его
$text=$r['text']."..."; // выводим текст статьи и ставии троеточие
$date=date("D, j M Y G:i:s", strtotime($r['date'])). " GMT"; // вывод даты в нужном формате
$author=$r['user'];
echo' <item>
<title>'.$title.'</title>
<link>http://'.$_SERVER['HTTP_HOST'].'/?blog_id='.$id.'</link>
<description>'.$text.'</description>
<author>'.$author.'</author>
<pubDate>'.$date.'</pubDate>
<guid>http://'.$_SERVER['HTTP_HOST'].'/?blog_id='.$id.'</guid>
</item>
';
}
echo '</channel>
</rss>';
?>
Элементы 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. |
Далее в блог head вставляем следующий код:
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://имя_сайта/rss.php" />
Пример:
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Ubuntu-desktop.ru - RSS</title>
<link>http://ubuntu-desktop.ru/rss.php</link>
<managingEditor>liman324@yandex.ru (Alex)</managingEditor>
<description>Ubuntu, Kubuntu, Xubuntu, Debian, Lubuntu, программы, приложения, игры, Linux</description>
<item>
<title>Base64</title>
<link>http://ubuntu-desktop.ru/?blog_id=882</link>
<description>Base64 - это позиционная система счисления с основанием 64. Система Base64 используется в электронной почте, как правило при передачи бинарных данных (файлы, картинки)....</description>
<author>liman28</author>
<pubDate>Thu, 7 Sep 2017 19:13:09 GMT</pubDate>
<guid>http://ubuntu-desktop.ru/?blog_id=882</guid>
</item>
******************
<item>
<title>Tribler - BitTorrent-клиент</title>
<link>http://ubuntu-desktop.ru/?blog_id=878</link>
<description>Tribler — BitTorrent-клиент, с открытым исходным кодом, который может быть использован для создания самодостаточной децентрализованной BitTorrent-сети, использующей...</description>
<author>liman28</author>
<pubDate>Wed, 6 Sep 2017 13:51:32 GMT</pubDate>
<guid>http://ubuntu-desktop.ru/?blog_id=878</guid>
</item>
</channel>
</rss>
Для проверки RSS - ленты воспользуйтесь онлайн сервисом http://validator.w3.org/feed/
Если Вы увидите следующую надпись, то RSS - лента настроена правильно:

