Скрипты для импорта RSS (через Javascript и php)

Tuesday, 21 Apr 09 в 0:42

скрипт rss импортТехнология RSS – штука очень полезная и интересная. Помнится как-то давным-давно я вычитал информацию, что Google ну очень любит сайты, где контент не просто статический, а более-менее как-то обновляется. То ли это влияло на скорость и частоту индексации, то ли еще на что-то. Не знаю, правда, насколько эта информация актуальная сейчас, но в любом случае RSS могут здорово разбавить сайт. Да, там есть ссылки, на источник новостей, но это своего рода благодарность за постоянно обновляемые новости. Сейчас полно всяких систем, которые обмениваются трафиком подобным образом – устанавливаются своеобразные информеры. В сети даже можно найти сайты, контент, которых в большей степени состоит из подобных блоков, которые берутся со сторонних источников. Я лично, не сторонник такой идеи, хотя, возможно, она может дать интересные результаты.

Но суть поста не в этом. Любая более-менее продвинутая система управления сайтом (CMS) имеет свой модуль для импорта новостей в формате RSS, но что делать, если у вас имеется собственноручно написанная админка или вообще статический сайт. Собственно подобная задача у меня сегодня и возникла. После небольшого серфинга я нашел 2 решения для импорта RSS, которыми сейчас и поделюсь.

RSS – скрипт РУ

Импортирует новости с помощью JavaScript. Это, по сути, является главным его преимуществом, поскольку нет никаких требований к хостингу, например, наличие PHP. Можно добавить несколько лент на одну страницу, внешний вид легко настраивается (через CSS). Установка также не требует особых временных затрат и глубоких познаний.

Идем на сайт и в специальной форме вводим адрес требуемого RSS потока.

импорт rss новостей скрипт

После этого на странице отобразится информация из фида (типа все работает корректно), плюс ниже будет дан код, который потребуется вставить на сайт. Он состоит из 2-х частей – в head добавляем стили, а непосредственно код вызова скрипта в нужное место своего сайта.

К сожалению, в процессе тестирования данный метод мне не подошел, так как он не совместим с кодировкой сайта utf-8. Помнится извечная проблема – очень много русскоязычных ресурсов до сих пор используют windows-1251 и в ней же отдают RSS поток. Поэтому при импорте на свои проекты получаю кракозябры. Теоретически можно этот «недуг» преодолеть – имеется в PHP функция iconv, которая позволят преобразовывать из одной кодировки в другую (win-1251, например, в тот же utf-8). Но, как я уже говорил выше, плюс данного скрипта именно в отказе от PHP и решении задачи только через JavaScript.

Вторым недостатком я бы назвал – привязку сервиса к сайту источнику. То есть вы получите код, но скрипт будет работать на удаленном сервере, насколько я понял, и если там что-то испортится, ваш импорт RSS также накроется. Плюс непонятно как будет вести себя механизм при одновременном его использовании многими пользователями – лишние глюки ведь нам ни к чему.

SimplePie

SimplePie импорт rssДанный скрипт совершенно другого уровня – тут и требования к хостингу имеются, и документация, и даже свои хаки. В общем, мощная и комплексная разработка. Забегая наперед скажу, что со своей задачей импорта RSS  он справился на все 100. Также хотелось поблагодарить автора данной статьи, где размещено описание SimplePie на русском.

Плюсом SimplePie есть его универсальность, точнее правильнее будет сказать, что разработка есть не «конечным решением», а представляет собой php-класс, который уже можно использовать по своему усмотрению. Отсюда возникает первая сложность (в какой-то степени недостаток) – чтобы разобраться со скриптом полностью, нужно знать PHP. Дальше я расскажу о его установке, но для пользования всеми функциями требуются дополнительные знания. Второй момент – есть много документации, но вся она на английском языке:) Ну и третье, требования для хостинга – PHP 4.3.0 или выше, установленные библиотеки XML, PCRE, cURL, Zlib, mbstring, iconv.

Взамен получаем очень гибкий и мощный продукт. SimplePie поддерживает работу с различными версиями каналов RSS (0.90, 0.91, 0.92, 1.0, 2.0), Atom (0.3, 1.0). В нем нет проблемы с кодировкой – там все каким-то чудным образом обрабатывается и на выходе получаем красивый результат. Разработчики заверяют, что поддерживаются специальные символы для 100 различных языков. Кстати, скрипт распространяется по BSD лицензии, поэтому его совершенно спокойно и бесплатно можно внедрять в коммерческие продукты.

Чтобы установить SimplePie скачиваем архив отсюда. Затем создаем в корневой директории хостинга папку simplepie, куда заливаем файлы архива. Там вы найдете файл sp_compatibility_test.php, запустив который можно проверить совместимость библиотеки со сборкой РНР на сервере. Если что-то не так, увидите и сможете задать вопрос (просьбу) хостеру. Также в папке simplepie нужно создать директорию cache, которая будет использоваться для кэширования импортированных данных.

В сборке имеется директория demo, где вы найдете примеры использования скрипта. Библиотека SimplePie состоит из одного класса с одноименных названием, поэтому для работы вы должны лишь создать объект этого класса, а затем использовать нужные методы. Для примера можете добавить в папку simplepie некий файл test.php со следующим кодом:

<?php
// загрузка библиотеки
require_once $_SERVER['DOCUMENT_ROOT'].'/simplepie/simplepie.inc';
// создание и настройка объекта SimplePie
$feed = new SimplePie();
$feed->set_feed_url('http://www.3dnews.ru/news/rss/'); // путь к rss-каналу
$feed->set_cache_location('cache');
$feed->init();
$feed->handle_content_type();
if ($feed->data) {
    // вывод названия канала
    echo '
<h1><a href="'.$feed->get_link().'">'.$feed->get_title() .'</a></h1>
 
';
    // вывод не более 5 элементов канала
    for ($i=0; $i<5; $i++) {
        $item = $feed->get_item($i);
        // вывод ссылки и названия новости
        echo '<a href="'.$item->get_permalink().'">'.$item->get_title().'</a>';
        // вывод описания новости
        echo '
<div>'.$item->get_description().'</div>
 
';
    }
}
?>

В итоге должны получить импортированный RSS поток. Обратите внимание на комментарии в коде, они указывают места, где можно (и нужно) добавлять свои данные – путь к rss, заголовок канала, новости, количество элементов.

P.S. Читаем статью как заработать на покере! – учимся и покоряем азартные вершины.

Закажите качественные сателлиты у профессионалов – уникальный контент, дизайн, создания сайта под ключ.

Узнайте про эффективные диеты для похудения.

Понравился пост? Подпишись на обновления блога по RSS для блоггеров и вебмастеровRSS, RSS для блоггеров и вебмастеровEmail или twitter для блоггеров и вебмастеровtwitter!
Добавить комментарий

Комментариев - 12 для данного поста

  1. @ qosys Пишет:

    На php полезно еще сделать свой репозиторий для импортированных рсс лент.
    Или можно что-нибудь помощней выбрать для синдикации многих лент.

  2. Скрипты для импорта RSS (через Javascript и php) :: Tod’s Blog « DevEzine Пишет:

    [...] Read the rest here: Скрипты для импорта RSS (через Javascript и php) :: Tod’s Blog [...]

  3. Tod Пишет:

    qosys, второй проект – SimplePie позволяет объединять несколько лент, причем описание есть в документации и примере – для php-ника настройка займет минут 5:) Очень мощный класс на самом деле.
    А “репозиторий рсс лент” в каком смысле? Что под этим подразумевается?

  4. @ qosys Пишет:

    Tod, понятно, значит SimplePie не настолько прост как кажется. Добавлю в закладки, потом с ним поиграюсь.

    Под репозиторием я имел ввиду дополнительную бд, в которую будут копироваться все записи из rss канала.

  5. Armadaman Пишет:

    О, как раз искал ))
    кажется скоро проект будет завершён :)

  6. Сергей Пишет:

    Пробую поставить RSS – скрипт РУ.
    Вроде все просто, но выводится ошибка:
    Parse error: syntax error, unexpected T_STRING, expecting ‘,’ or ‘;’ in /sata1/home/users/piazzo/www/www.slavyansk.biz.ua/newstv.php on line 49

    В строке 49 стоит:

    Что я делаю не так?

  7. Tod Пишет:

    Сергей, код в комментариях не отобразился – напиши мне на почту или в аську – разберемся.

  8. Сергей Пишет:

    Нашел ошибку сам:)
    Спасибо

  9. Сергей Пишет:

    А как можно увеличить кегль заголовка в выводимой ленте.
    Пробую изменить с стилях, что вставлял в тег HEAD, но ничего не получается.

  10. Саня Пишет:

    У меня возникает проблемка с этим скриптом. Все работает нормально но есть одно но … если скрипт вставить в отдельный файл то работает нормально, когда я его вставляю в “тело” сайта (кодировка сайта Windows-1251) то выводит абрукадабру (я так понимаю в UTF-8)… Кто подскажет что это может быть, а то я уже целый день с ним вожусь и никак не могу сделать. Пожалуйста очень надо!!!!

  11. Tod Пишет:

    Windows-1251 must die, есть функция в php которая переводит utf-8 в вин-1251 – называется вроде iconv. Попробуй добавить ее в скрипт и преобразовать его результаты.

  12. Coolfire Пишет:

    Импорт RSS полезная штука в плане обновления сайта. Главное качественных доноров найти.
    2 Tod: О да! cp-1251 must die!

Оставить комментарий (правила комментирования)