Онлайн заработок, создание и монетизация сайтов, веб-разработка, SEO и SMO продвижение, фриланс, партнерки, полезные сервисы вебмастерам, блоггинг.

Главная » Web разработка » Скрипты для импорта RSS (через Javascript и php)

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

скрипт 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. Читаем статью как заработать на покере! — учимся и покоряем азартные вершины.

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

21.04.09

Категории: Web разработка.

Теги: , , , , ,

14 Comments
  1. qosys

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

  2. Tod

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

  3. qosys

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

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

  4. Armadaman

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

  5. Сергей

    Пробую поставить 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 стоит:

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

  6. Tod

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

  7. Сергей

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

  8. Сергей

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

  9. Саня

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

  10. Tod

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

  11. Coolfire

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

  12. JoHn

    Для перекодировки в Windows-1251 добавьте $feed->set_output_encoding(‘Windows-1251’);

  13. muskat

    а как дату публикации импортировать?

  14. Владимир

    Ещё один сервис: http://itde.vccs.edu/rss2js/build.php
    Даже ссылку на них не надо ставить.

Добавить комментарий

Ваш e-mail не публикуется. Обязательные поля помечены *
Если вы комментируете впервые, то текст будет отправлен на модерацию.