Например, у Вас сайт посвящён обзору компьютерных игр, и Вы желаете иметь новостную ленту, которая будет наполняться сразу из нескольких источников.
К сожалению, при стандартной организации такого вывода мы сильно зависим от RSS источников. Если источник не работает, то соответственно раздел нашего сайта тоже не работает. Также нет возможности вести собственный архив новостей и статей, что делает нашу новостную ленту не особо привлекательной.[spoiler]
Для решения данной задачи был разработан небольшой тестовый пример RSS агрегатора. Агрегатор позволяет загружать новости сразу с нескольких RSS источников и сохранять их в различных информационных блоках и секциях, что делает нашу новостную ленту более живой и привлекательной. Что ж, рассмотрим процесс установки и работы данного механизма.
1. Необходимо скачать файл
Обновлено "UPD 20.07.2008" (версия 0.2.0, ANSI)
Обновлено "UPD 24.07.2008" (версия 0.2.1, ANSI)
Содержимое которого распаковать в директорию /bitrix/wizards/ или загрузить из раздела Рабочий стол\Настройки\Настройки продукта\Список мастеров
2. Затем авторизуемся на сайте как администратор и перейдём в раздел: Рабочий стол\Настройки\Настройки продукта\Список мастеров, где увидим только что загруженный нами мастер.
3. Чтож, перейдем к самому процессу установки RSS агрегатора, на начальном шаге появится приветствующее нас окно с небольшим объяснением, что же мы сейчас будем делать.
4. На следующем шаге мастер запрашивает данные для создания нового типа информационного блока, в котором будут храниться все его необходимые настройки, а также демонстрационные данные если будет выбран данный параметр при установке, но об этом немного позже.
5. Затем необходимо указать данные для создания самого информационного блока, где каждый элемент будет являться настройкой к RSS источнику и содержать все необходимые данные для подключения к нему.
6. На следующем шаге нам предлагают установить демонстрационные данные, которые из себя будут представлять дополнительный информационный блок куда будут загружаться новости с сайта CodeNet и OpenNet. А также, создание агента для автоматической загрузки данных с RSS лент через определённые промежутки времени. Мы установили запуск агента каждый час (3600 сек.) и 3 источника за раз. Не рекомендую использовать более 3х источников, иначе пользователю, который попадёт на работу агента заметит значительную загрузку сайта(долгова-то страничка будет грузиться, что не очень приятно), т.к. необходимо некоторое время и ресурсы, чтобы загрузить данные и добавить их в БД.
7. Далее мастер нас предупредит что со следующего шага начинается установка и покажет что же мы будем устанавливать. Смело жмём вперёд и терпеливо ждём окончания установки ( надеюсь что не ошибки).
Хочется отметить, что будет использована директория \bitrix\php_interface\rssagrr\ в которую будут записан класс для работы с Агрегатором. Не рекомендуем занимать данную директорию . Также, будут небольшие изменения в файле \bitrix\php_interface\init.php, если что, загляньте туда.
8. Ура, установка прошла успешно!
И что же дальше скажете вы? А дальше начинает работать Агрегатор по агенту (который мы решили установить при в процессе работы мастера). С первого же хита, при установленных демонстрационных данных он полезет "грабить" OpenNet и CodeNet, они же не жадные? В результате перейдёте в раздел с демонстрационными данными видим список элементов.
А теперь быстренько создаём новую страничку и кинем на нее компонент "Новости".
Вот так они гламурненько выглядят, а если еще шаблон компонента немножко поправить, то вообще чудесно будет.
В заключение хочется отметить, что данное решение является тестовым(так сказать для ознакомления), которое должно показать как можно создавать мастера и воплощать интересные идеи в жизнь, а самое главное делать наши проекты более интересными и живыми. Не советую с лету использовать на реально работающих сайтах.
PS. Также хочется сказать, что новые элементы с настройками RSS лент создаются в новосозданном инфоблоке 8) у нас это был "RSS Агрегатор". При создании элемента нам необходимо заполнить ряд параметров
*Название - ну без него не деться, надо как то обозвать наш новый источник
Адрес сайта для импорта - адрес сайта с RSS, без http конечно
Порт (обычно 80) - порт он и есть порт
Путь к rss файлу - путь к файлу на сервере RSS источника
Строка запроса (если нужна) - параметры запроса, например rss=yes
Находятся ли новости вне канала (обычно нет) - это стоит уточнить
Количество новостей для показа (0 - не ограничивать) - не самый обязательный параметр, но периодически нужен
Частота обновления (в сек.) - как часто стоит запрашивать данные однако быстрее чем работает агент, и ttl RSS источника, так, что рекомендуем более грамотно подходить к данному параметру
Время последнего обновления - для пользователей больше для статистики нужен, именно по этому параметру идет выборка и обновление лент
Преобразовывать результат в HTML - преобразовать в HTML теги часть кода, чтобы новость красиво выглядела бывает полезно
ID инфоблока - инфоблок в который будет записаны полученные новости
ID секции инфоблока - секция инфоблока в который будет записаны полученные новости
ID свойства инфоблока для хранения ссылки на детальную информацию - свойство инфоблока в которое будет установлена ссылка на детальный текст новости.
PSS. Все пожелания и предложения, ошибки выслушаю в комментариях к данному посту 8)
PSSS. Однако, рекомендую использовать Cron для загрузки данных из RSS источников, используя РНР-метод RSSAggregator::runAgentRSS(3)
UPD 20.07.2008:
Слегка обновился агрегатор
Параметры: Адрес, Порт, Путь, Запрос - были объединены в 1 значение
Убрано значение Кол-во новостей
Добавлены константы
define('RSSAGGREGATOR_LOG', true); define('RSSAGGREGATOR_LOG_PATH', dirname(__FILE__).'/rss_log.txt'); define('RSSAGGREGATOR_AGENT_SAFE_MODE', true); |
UPD 24.07.2008:
- При добавлении элемента в инфоблок производится производится попытка выставить параметр DATE_ACTIVE_FROM
- Небольшие косметические изменения в Мастере
- Изменены значения, хранимые в переменной arrRSSUpdate класса RSSAggregator. Несколько переработано API, входные\выходные параметры без изменений.
ANSI -
ЗЫ. тестим, предлагаем =)
Адрес сайта для импорта
Путь к rss файлу
Строка запроса (если нужна)
Однако, так просто избавиться от других параметров не шибко получится. Телепатически определить в какой ИБ писать новость итд вряд ли удастся =( но все же подумать можно =)
по умолчанию в импорт?
Спасибо за совет
Сорри если что, написал просто "к сведению" ...
Оба различных агригатора становятся рядом? для разных кодировок?
Если нет, то почему бы не сделать выбор кодировки опциональным?
Не понимаю зачем такое разделение вообще нужно, объясните.
>для разных кодировок?
Кодировок чего именно? сайта\админки\др.
есть три ленты, образно говоря, две АНСИ, одна УТФ8, и хочется что бы все 3 были в новостях в единой кодировочке УТФ8 И что бы это решалось только одной галочкой при добавлении новой ленты
а другой только утф кодить в кодировку сайта
а нужно что бы был один и танул и утф и анси, и кодил в кодировку сайта, все просто
Агрегатор тянет данные в той кодировке, в которой RSS источник выдает, а потом ее преобразует в кодировку сайта.
Например,
цытирую:
"Обновка доступна по ссылкам:
ANSI -
UTF8 -
что такое анси, а что такое утф8, обьясните... зачем две версии
Ссылка битая - перезалейте файл, пожалуйста!
С уважением.
Будьте так добры, выложите на Яндекс у кого есть эта версия.
ссылка на rss google в браузере такая:
добавил в агрегатор - результат нулевой.
Добавил: такой адресок:
- заливает корявые новости:
спутниковое телевидение – Новости Google
27.07.2010
БаС?РєРёСЂСЃРєРѕРµ спутниковое телевидение сменило руководство - РРђ REGNUM
Пробовал через обычный модуль импорта rss - такая же история.
Есть решение данной проблемы?
- есть!!!! - прокачать обновления Битрикса )))))))))))))))))
Fatal error: Class 'RSSAggregator' not found in /usr/local/www/vhosts/www.сайт.ru/bitrix/wizards/rss_translated/wizard.php on line 429
такая ошибка... в чем проблема? объясните пожалуйста?
Тогда бы один сайт получал из нескольких других полноценные публикации. Было бы здорово
у кого ошибки:
1. конвертировать в utf8 оптом можно через
2. у кого ошибка Fatal error: Class 'RSSAggregator' not found in /usr/local/www/vhosts/www.сайт.ru/bitrix/wizards/rss_translated/wizard.php on line 429 идем в файл rss_translated/wizard.php на 429 строку приводим в вид $package = &$wizard->GetPackage(); - там лишний пробел "& $wizard".
1. Следуя совету Сакена сконвертировал в utf8
2. Последовал Совету Сакена, открыл файл, но на 429-й строке совсем другое чем "wizard->GetPackage()", зато есть в других местах файла (поищите поиском), исправил ошибка пропала.
При установке агента вылезло окно логина-пароля, зайти под своим паролем не удалось....После того, как зашел в другом браузере под своим логином-паролем, тут все разблокировалось.
Поменял порядок шагов в wizard.php, чтобы сначала демо устанавливалось, потом агент. Наверное что-то напутал, агент вообще не установился, добавил его вручную "Рабочий стол > Настройки > Агенты", имя функции подсмотрел в исходниках (в файле rss_agrregator.php).
В процессе несколько раз устанавливал-удалял.
RSS-лента CodeNet не работала, я адрес RSS-ленты изменил совсем на другой сайт (причем сразу в исходниках, чтобы при первом запуске агента обе ленты скачались), все работает.
Резюме: Работает, но пришлось поплясать с бубном.