Введение в SimplePie
Познакомлю вас с очень интересной библиотекой написанной на PHP, которая называется SimplePie. Предназначена для управления RSS и Atom каналами (фидами), распространяется по лицензии BSD, то есть бесплатно, и является незаменимым средством, если вам требуется разобрать структуру данных RSS или Atom фида для дальнейшего использования контента
SimplePie имеет прекрасную документацию и скринкасты, это все можно прочитать и просмотреть на офф сайте. Для понятия как работает эта библиотека необходимо иметь начальные знания PHP и желание. Если есть желание, но нет навыков в php, то очень советую вам изучить вот эти уроки по php для абсолютных новичков (на английском, но очень понятно, может быть руки дойдут, то я их переведу)
Кроме всех прелестей SimplePie имеет отличную интеграцию с множеством движков блогов, вики, форумов, например: Joomla, Drupal, DokuWiki, MODx, Mediawiki, WordPress и т.д. И ещё что мне очень нравится, так это то, что она замечательно работает с фреймворком CodeIgniter. Все поддерживаемые плагины и интеграции смотрим здесь.
От теории перейдем к практике, и для примера сделаем простой RSS Grabber или RSS Reader, называйте как хотите смысл остается тем же, получение контента с фидов и дальнейшее его применение.
Для начала качаем SimplePie. Затем в рабочей директорию нашего http сервера создаём папку simplepie и распаковуем туда всё содержимое скачанного архива (если у вас всё ещё нет тестового http сервера то советую XAMPP). Запускаем сервер, заходим и смотрим демо-пример http://localhost/simplepie/demo/. Но для наглядности использования библиотеки создадим свой пример. Для этого в корне вашей папки simplepie создаем ещё одну папку и называем example, в ней будет лежать наш пример, в ней создаём файл index.php
Для того что бы полученный контент кэшировался, необходимо создать папку cache и сделать её доступной для записи. Заходим http://localhost/simplepie/example/ и ничего невидим :-))), это пока. Для понимания того что мы будем делать вам понадобится справочник встроенных методов SimplePie.
Открываем index.php и пишем стандартный шаблон html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Demo_SipmpePie</title> </head> <body> </body> </html>
Между тегами <body> будет находится наш основной код. Пишем (естественно между <?php ?>):
require_once (’../simplepie.inc’); - подключаем файл simplepie.inc, который находится в корневой директории
$feed = new SimplePie(’k.img.com.ua/rss/ru/news.xml’); - создаем новый объект. Тут пишем адрес фида, с которого будут поступать контент. Есть возможность подключать несколько фидов, но об этом расскажу ниже.
$feed->handle_content_type(); - Устанавливает набора символов в соответствии с кодировкой ленты.
foreach ($feed->get_items() as $item) - все поступающие элементы ($feed->get_items()) будут обрабатываются в цикле и присваивается переменной $item
{ echo $item->get_title();
echo ‘<hr />’; } - получаем заголовки новостей с выбранной RSS лент а тег <hr> просто для
разделения новостей
В итоге у вас должно получится, нечто подобное:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Demo_SipmpePie</title> </head> <body> <?php require_once('../simplepie.inc'); $feed = new SimplePie('progg.ru/Feed/Atom/Published'); $feed->handle_content_type(); foreach ($feed->get_items() as $item) { echo $item->get_title(); echo '<hr />'; } ?> </body> </html>
Заходим, проверяем http://localhost/simplepie/example/, выглядит примерно вот так:

Теперь подключим несколько лент и немного украсим.
Что бы подключить несколько фидов необходимо их заключить в массив
$feed = new SimplePie(array( 'k.img.com.ua/rss/ru/news.xml', 'rss.tsn.ua/ru/index.rss', 'img.lenta.ru/r/EX/import.rss', ) );
Теперь у нас будут выводиться 3 новостные ленты. Дальше сделаем, что бы название новости являлось гиперссылкой на оригинал, в этом нам поможет get_permalink() .
Вместо
echo $item->get_title();
Пишем
$feed=$item->get_feed();
echo ‘<h4><a href=”‘.$item->get_permalink().’”>’.$item->get_title().’</a></h4>’;
После при нажатии на заголовок мы перейдем на оригинал статьи. Проверьте!!
Теперь у нас есть название статьи, но нет описания и даты создания. Исправим это
с помощью get_content() и get_date().
Пишем
echo ‘<p>’ .$item->get_content(). ‘</p>’;
что бы понимать, откуда новость я хочу, чтобы после каждой новости отображалась favicon
соответствующего сайта со ссылкой на сам сайт и дата публикации.
<strong> </strong>echo '<p>Ресурс :<a href="'.$feed->get_permalink().'"><img src="'.$feed->get_favicon().'" alt="'.$feed->get_title().'" title="'.$feed->get_title().'" border="0" width="16" height="16"/> </a>|' .$item->get_date(). '</p>';
Разберем:
строка <a href=”‘.$feed->get_permalink().’”><img src=”‘.$feed->get_favicon().’”
alt=”‘.$feed->get_title().’” title=”‘.$feed->get_title().’” border=”0″ width=”16″ height=”16″/>
выводит favicon 16×16 с помощью $feed->get_favicon() и ставит на нее гиперссылку $feed->get_permalink(), а $feed->get_title() отображает название ленты.
К сожалению, не у всех сайтов есть favicon на rss канале.
Конечный вариант должен выглядеть примерно так (естественно между <body>):
<?php require_once('../simplepie.inc'); $feed = new SimplePie(array( 'k.img.com.ua/rss/ru/news.xml', 'rss.tsn.ua/ru/index.rss', 'img.lenta.ru/r/EX/import.rss', )); $feed->handle_content_type(); foreach ($feed->get_items() as $item) { $feed=$item->get_feed(); echo '<h4><a href="'.$item->get_permalink().'">'.$item->get_title().'</a></h4>'; echo '<p>' .$item->get_content(). '</p>'; echo '<p>Ресурс:<a href="'.$feed->get_permalink().'"><img src="'.$feed->get_favicon().'" alt="'.$feed->get_title().'" title="'.$feed->get_title().'" border="0" width="16" height="16" /></a>|' .$item->get_date(). '</p>'; echo '<hr />'; } ?>
Ну, вот и все, заходим, проверяем, радуемся.

Связанные записи
-
http://econom-print.ru Дмитрий
-
http://www.proseoblogger.com SeoEvgeny
-
Сергей
-
http://privats.ru/ Безумный Админ
-
Cергей
-
http://privats.ru/ Безумный Админ
-
Вова
-
http://eslipola.net Dim
-
Дэн
-
Евгений
