RSS — семейство XML-форматов, предназначенных для описания лент новостей, анонсов статей, изменений в блогах и т. п. Информация из различных источников, представленная в формате RSS, может быть собрана, обработана и представлена пользователю в удобном для него виде специальными программами-агрегаторами.
Обычно с помощью RSS 2.0 даётся краткое описание новой информации, появившейся на сайте, и ссылка на её полную версию. Интернет-ресурс в формате RSS называется RSS-каналом, RSS-лентой или RSS-фидом. (Взято с википедии).
Вот и разобрались что такое RSS канал. Приступим, непосредственно, к написанию сценария, который и будет создавать данный канал. Создадим класс с помощью которого и будем осуществляться функционирование канала. Код класса:
class rss { //количество новостей в канале const count = 10; //заголовок канала const title = 'Новости нашего сайта'; //адрес сайта const url = 'http://wapcoder.com'; //описание канала const desc = 'Новости сайта для wap разработчиков';
//строим конструктор function __construct($host,$user,$password,$db_name) { $this->header(); if (!$this->connect_db($host,$user,$password,$db_name)) $this->error_connect_db(); else $this->body(); }
//соединяемся с базой function connect_db($host,$user,$password,$db_name) { $r=@mysql_connect($host,$user,$password); if (!$r) return false; mysql_query ('SET NAMES "UTF8"',$r); mysql_query ('SET collation_connection="utf8_general_ci"',$r); mysql_query ('SET collation_server="utf8_general_ci"',$r); mysql_query ('SET character_set_client="utf8"',$r); mysql_query ('SET character_set_connection="utf8"',$r); mysql_query ('SET character_set_results="utf8"',$r); mysql_query ('SET character_set_server="utf8"',$r); if (!mysql_select_db($db_name,$r)) return false; return true; }
//шапка каналаfunction header() { header('Content-type: application/xml; charset=utf-8'); echo '<?xml version="1.0"?> <rss version="2.0"> <channel> <title>'.$this->win2utf(self::title).'</title> <link>'.self::url.'</link> <description>'.$this->win2utf(self::desc).'</description> <language>ru</language>'; }
//тело канала function body() { $q=mysql_query ('SELECT * FROM win_news_club LIMIT '.self::count); if ($q) { if (mysql_num_rows($q) == 0) $this->news_not_found(); else while ($rows=mysql_fetch_array($q)) { echo '<item> <title>'.$rows['header'].'</title> <link>'.self::url.'</link> <description>'.$rows['contens'].'</description> <pubDate>'.date ('D, d M Y H:i:s',strtotime($rows['date_create'])).' GMT</pubDate> <guid>'.self::url.'/news/'.$rows['id'].'/</guid> </item> '; } mysql_free_result($q); } }
//при соединении с базой возникли ошибки function error_connect_db() { echo '<item> <title>'.$this->win2utf('Временные неполадки').'</title> <link>'.self::url.'</link> <description>'.$this->win2utf('Извините, на сайте возникли технические неполадки!').'</description> <pubDate>'.date ('D, d M Y H:i:s').' GMT</pubDate> <guid>http://wapcoder.com/</guid> </item>'; }
//новостей не наёдено function news_not_found() {echo '<item> <title>'.$this->win2utf('Новостей не найдено').'</title> <link>'.self::url.'</link> <description>'.$this->win2utf('Новостей не найдено!!!').'</description> <pubDate>'.date ('D, d M Y H:i:s').' GMT</pubDate> <guid>http://wapcoder.com/</guid> </item>'; }
//перекодирование из windows-1251 в utf-8 function win2utf($msg) { return iconv('windows-1251','utf-8',$msg); } //объявляем деструтор function __destruct() { echo '</channel></rss>'; mysql_close(); } }
Как использовать данный объект: В методе body исправьте в запросе имя таблицы на своё и извлекаемые поля. Также всё это можно без проблем модифицировать, чтобы новости извлекались из файла. Копируем код класса в файл php и после кода класса пишем: $rss= new rss('сервер где расположен mysql','имя пользователя','пароль','имя базы данных'); Пример: $rss= new rss('localhost','windoctor','123456','cms');
ВНИМАНИЕ: Данный сценарий будет работать на сервере с php не младше 5 версии.
В принципе всё. Теперь у вас есть собственный RSS канал новостей. Всем спасибо и желаю удачи в кодинге. Пример RSS канала сайта http://wapcoder.com можно просмотреть по адресу http://wapcoder.com/rss.php Автор статьи: windoctor Все вопросы связанные со статьёй просьба писать на форум http://wapcoder.com При копировании статьи, видимая ссылка на http://wapcoder.com обязательна. Сайт автора: http://sultanov.net
|