Как самому создать RSS-канал на своем сайте?!
В прошлой статье Вы узнали, что такое RSS и как RSS работает! В этой же статье я расскажу Вам, как на своем сайте при помощи PHP создать свою новостную ленту!
Итак, для реализации RSS-ленты на своем сайте, необходимо иметь:
- сайт на PHP;
- базу данных MySQL, в которой хранятся все Ваши заметки или новости!
Если Ваш сайт отвечает этим требованиям, то приступим к реализации RSS-канала на своем сайте!
Чтобы создать RSS-канал, необходимо создать специальную страницу в стандарте XML 1.0 и расположить её у себя на сайте. Но прежде чем продолжить, рассмотрим стандартную структуру простого канала RSS.
<?xml version="1.0"?> |
То есть основные параметры RSS ленты задаются в верхней части. Сначала указывается, что это XML документ формата XML 1.0 и что это к тому же RSS 2.0. Затем указываются название ленты, ссылка на главную страницу сайта, краткое описание содержимого и дата последнего изменения в ленте. Затем идёт цикл самих статей или новостей в тегах <item>.
Ниже приведен список и описание тегов RSS2.0
Обязательные элементы канала | |
---|---|
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.
Если со структурой стандартного RSS-канала разобрались, то приступаем к реализации на PHP.
Даты все указываются в формате RFC 2822. Если дата в вашей базе данных хранится в другом формате, то её можно конвертировать с помощью функции PHP date();
$upldt = date("r",$yourdatefromdb);
(например, 2007-09-17 конвертируется в Mon, 17 Sep 2007 00:00:01 GMT)
Так как вся информация хранится в базе данных, то первым делом создадим файл, который будет отвечать за подключение к базе данных MySQL и назовем его db.php
<?php $DB_host = "localhost"; // имя сервера MySQL $DB_user = "root"; // имя пользователя MySQL $DB_pass = "pass"; // пароль на сервере MySQL $DB_name = "database"; // имя базы данных /* Соединяемся с сервером MySQL */ $db=mysql_connect($DB_host,$DB_user,$DB_pass); /* Выбираем необходимую базу данных */ mysql_select_db($DB_name, $db); /* Устанавливаем кодировку */ mysql_query('SET NAMES cp1251'); ?> |
Далее создадим файл rss.php, который и будет отвечать за формирование Вашего RSS-канала!
<?php /* Подключаемся к базе данных*/ include "db.php"; /* Показываем браузеру, что это xml-документ */ header("content-type:text/xml"); /* Выводим название и описание канала*/ echo "<?xml version=\"1.0\" encoding=\"windows-1251\"?> <rss version=\"2.0\"> <channel> <title>Название RSS-ленты</title> <link>http://test.ru</link> <description>Описание RSS-ленты</description> <language>ru</language>"; /* В цикле выводим все заметки из базы данных из таблицы articles (у Вас будет другая таблица)*/ $result=mysql_query("SELECT * FROM post ORDER BY date DESC"); if (mysql_num_rows($result) > 0){ while ($myrow = mysql_fetch_array($result)){; echo "<item>". "<title>".strip_tags($myrow['title'])."</title>". "<link>http://test.ru/articles.php?id=".$myrow['id']."</link>". "<description><![CDATA[".$myrow['description']."]]></description>". "<pubDate>".date("r",$myrow['date'])."</pubDate>". "<guid>http://test.ru/articles.php?id=".$myrow['id']."</guid>". "</item>"; } } echo "</channel></rss>"; ?> |
Ну вот собственно и все!
Теперь осталось закачать эти два файла к себе на сервер, например в папку rss и тогда ссылка на Ваш RSS-канал будет иметь вид http://адрес_вашего_сайта.ru/rss/rss.php.
А для того, чтобы браузер автоматически определял Ваш RSS-канал, необходимо между тегами <head></head> прописать следующий код:
<link rel="alternate" type="application/rss+xml" title="Название Вашего RSS-канала" href="http://адрес_вашего_сайта.ru/rss/rss.php" /> |
Если же Ваш сайт не поддерживает PHP и новости не хранятся в базе данных MySQL, то Вам необходимо вручную создать такой xml-файл и каждый раз добавлять в него свои новости!
Ну и на последок скажу пару слов о том, как отслеживать статистику по своему RSS-каналу! Именно для этих целей и был создан сервис feedburner. Он позволит вам получать максимально возможную статистику, такую, например, как: количество подписчиков, распределение подписчиков по странам, степень интереса подписчиков к тем или иным новостям, возможность получать ваши RSS-новости по e-mail и т.д.
Основной принцип работы feedburner`а заключается в том, что он является посредником между вашим RSS-документом и читателями. Вы указываете feedburner`у адрес своей RSS-ленты, после чего feedburner сможет отдавать эту ленту уже из другого адреса (адрес будет таким: http://feeds.feedburner.com/ + имя вашей RSS-ленты). И если пользователи будут подписываться именно на адрес от feedburner`а, вы сможете в полной мере использовать все функции данного сервиса. При этом нужно помнить, что если кто-то подпишется на настоящий адрес вашего канала, вы не сможете получить прелести использования feedburner`а.
Эта схема поможет придать больше наглядности вышеописанному:
Теперь вы можете добавить свою ленту RSS в различные каталоги RSS лент и ждать притока посетителей с них на ваш сайт.
Скачать исходники Вы можете по этой ссылке!
Удачи вам!
-
Комментарии (19)
- Сайт
Facebook