Перед написанием 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 — лента настроена правильно: