Документация для разработчиков
Темная тема

RSS

Описание

RSS - формат, предназначенный для обмена информацией (прежде всего новостями) между сайтами. Формат RSS является диалектом XML. Получить полную информацию по формату RSS 2.0 можно по адресу http://backend.userland.com/rss.

Терминология

Канал
Информационный блок в RSS формате.
Сайт-сервер
Сайт, который экспортирует (отдает) информацию в формате RSS.
Сайт-клиент
Сайт, который импортирует (принимает) информацию в формате RSS.
Кеширование
Временное хранение информации, полученной с сайта-сервера, на сайте-клиенте для ускорения повторного доступа к ней.
Узел (элемент) канала
Элемент информационного блока (например, новость или товар) в RSS формате.

Экспорт в RSS

Существует три способа экспорта содержимого информационного блока в формат RSS

Динамическая ("на лету") генерация RSS файла по запросу сайта-клиента.

Для включения этого способа необходимо на сайте-сервере поставить флаг Разрешен экспорт в RSS динамически в настройках информационного блока и установить в поле Действительно (часов) время, через которое сайт-клиент должен будет перезапрашивать данные с сайта-сервера (между перезапросами сайт-клиент будет выводить данные из кеша).

Для доступа к RSS файлу сайт-клиент должен запросить скрипт /bitrix/rss.php с сайта-сервера с параметрами ID, LANG, TYPE и LIMIT.

Параметры запроса
Параметр Описание
ID Код информационного блока или символьный код инфоблока.
LANG Сайт информационного блока.
TYPE Тип информационного блока.
LIMIT Сколько элементов информационного блока выдавать.

Пример запроса
http://www.ваш_сайт.ru/bitrix/rss.php?ID=3&LANG=ru&TYPE=news&LIMIT=3

Прегенерация RSS файла

Для включения этого способа необходимо на сайте-сервере поставить флаг Разрешен экспорт в RSS файл в настройках информационного блока и установить поля Количество экспортируемых в RSS файл элементов (ограничивает максимальное количество экспортируемых в файл элементов, -1 для отсутствия ограничений) и За сколько последних дней экспортировать в RSS файл (ограничивает экспортируемые в файл элементы заданным количеством последних дней по началу периода активности элемента, -1 для отсутствия ограничений).

RSS будет генерироваться с периодичностью, заданной в поле Действительно (часов), и сохраняться в файл с именем типа iblock_rss_<ID блока>.xml в каталог, заданный в настройках модуля информационных блоков.

Для доступа к RSS файлу сайт-клиент должен запросить файл http://<сайт-сервер>/<путь из настроек модуля информационных блоков>/iblock_rss_<ID блока>.xml.

Примеры запроса

http://www.ваш_сайт.ru/upload/iblock_rss_3.xml

Прегенерация RSS файла в Yandex-формате.

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

RSS будет генерироваться с периодичностью, заданной в поле Действительно (часов), и сохраняться в файл с именем типа yandex_rss_<ID блока>.xml в каталог, заданный в настройках модуля информационных блоков.

Для доступа к RSS файлу сайт-клиент должен запросить файл http://<сайт-сервер>/<путь из настроек модуля информационных блоков>/yandex_rss_<ID блока>.xml.

Пример запроса
http://www.ваш_сайт.ru/upload/yandex_rss_3.xml

 Структура элемента канала в RSS файле

По умолчанию при генерации RSS узел <item> строится следующим образом:

<item>
	<title>Поле Название элемента информационного блока</title>
	<link>Поле URL страницы детального просмотра информационного блока</link>
	<description>Поле Описание для анонса элемента информационного блока, если оно заполнено. Иначе поле Описание для детального просмотра элемента информационного блока.</description>
	<pubDate>Поле Период активности элемента информационного блока.</pubDate>
	<enclosure url="Адрес изображения, загруженного в поле Описание для анонса элемента информационного блока." length="Размер файла изображения" type="Тип файла изображения" width="Ширина файла изображения" height="Высота файла изображения"/>
	<yandex:full-text>Только в Yandex-формате. Поле Описание для детального просмотра элемента информационного блока.</yandex:full-text>
</item>

Изменить генерацию можно на странице редактирования информационного блока в разделе Привязка полей для выгрузки в RSS. Поля RSS могут принимать любые текстовые значения. Кроме того можно использовать параметры, которые при генерации будут заменены на реальные данные. Параметры записываются в виде #ИМЯ#. В качестве имени параметра могут быть использованы коды свойств, а так же следующие значения:

  • NAME - заголовок элемента информационного блока;
  • DETAIL_PAGE_URL - адрес страницы с детальной информацией об элементе;
  • PREVIEW_TEXT - описание для анонса;
  • DETAIL_TEXT - описание для детального просмотра;
  • ACTIVE_FROM - начало периода активности/

Импорт из RSS

Для получения информации на сайте-клиенте следует воспользоваться методом GetNewsEx класса CIBlockRSS. Метод GetNews также доступен, но не рекомендуется к использованию как устаревший.

array
CIBlockRSS::GetNewsEx(
	SITE, 
	PORT, 
	PATH, 
	QUERY_STR
);

Функция возвращает канал из кэша (если он не устарел) или с сайта-сервера.

Параметры запроса

SITE Адрес сайта-сервера. Например, "www.ваш_сайт".
PORT Порт сайта-сервера. Например, 80.
PATH Путь к скрипту, генерирующему RSS на сайте-сервере. Например, "/bitrix/rss.php".
QUERY_STR Строка запроса, если она необходима. Например, ID=3&LANG=ru&TYPE=news&LIMIT=5. Обратите внимание, что строка запроса должна строиться на основании спецификации HTTP.

Возвращаемое значение

Функция возвращает массив, содержащий данные запрошеного RSS файла.

Примеры использования


<?
CModule::IncludeModule("iblock");
$arRes = CIBlockRSS::GetNewsEx("www.bitrix.ru", 80, "/bitrix/rss.php", "ID=3&LANG=ru&TYPE=news&LIMIT=5");
$arRes = CIBlockRSS::FormatArray($arRes);

echo $arRes["title"];          // Название канала/блока
echo $arRes["link"];           // Ссылка на сайт-сервер
echo $arRes["description"];    // Описание канала/блока
echo $arRes["lastBuildDate"];  // Дата генерации файла на сайте-сервере
echo $arRes["ttl"];            // Через сколько часов обновить с сайта-сервера

echo $arRes["image"]["title"];   // Заголовок изображения блока/канала, если есть
echo $arRes["image"]["url"];     // Ссылка на файл изображения блока/канала, если есть
echo $arRes["image"]["width"];   // Ширина изображения блока/канала, если есть
echo $arRes["image"]["height"];  // Высота изображения блока/канала, если есть

echo $arRes["item"][0]["title"];       // Заголовок первой новости
echo $arRes["item"][1]["title"];       // Заголовок второй новости
echo $arRes["item"][1]["link"];        // Ссылка на вторую новость
echo $arRes["item"][1]["description"]; // Описание второй новости
echo $arRes["item"][1]["pubDate"];     // Дата публикации второй новости
echo $arRes["item"][1]["enclosure"]["url"];     // Ссылка на файл-вложение второй новости
echo $arRes["item"][1]["enclosure"]["length"];  // Размер файла-вложения второй новости
echo $arRes["item"][1]["enclosure"]["type"];    // MIME тип файла-вложения второй новости
echo $arRes["item"][1]["enclosure"]["width"];   // Ширина файла-вложения картинки
echo $arRes["item"][1]["enclosure"]["height"];  // Высота файла-вложения картинки

?>

<?
CModule::IncludeModule("iblock");
$arRes = CIBlockRSS::GetNewsEx("www.bitrix.ru", 80, "/bitrix/rss.php", "ID=demo&LANG=ru&TYPE=news&LIMIT=5");
$arRes = CIBlockRSS::FormatArray($arRes);
?>
<b><?echo $arRes["title"] ?></b><br>

<table cellpadding="2" cellspacing="0" border="0" width="80%">
	<?for ($i = 0; $i < count($arRes["item"]); $i++):?>
	<tr>
		<td width="100%">
			<font class="date">
				<?echo $arRes["item"][$i]["pubDate"]?>
			</font>&nbsp;|&nbsp;
			<?if (strlen($arRes["item"][$i]["link"])>0):?>
				<a href="<?echo $arRes["item"][$i]["link"]?>" class="zag">
			<?endif;?>
			<?echo $arRes["item"][$i]["title"]?>
			<?if (strlen($arRes["item"][$i]["link"])>0):?>
				</a>
			<?endif;?>
			<br>
		</td>
	</tr>
	<tr>
		<td valign="top" width="100%">
			<?if (strlen($arRes["item"][$i]["enclosure"]["url"])>0):?>
				<table cellpadding="0" cellspacing="0" border="0" align="left">
					<tr>
						<td valign="top">
							<img src="<?echo $arRes["item"][$i]["enclosure"]["url"] ?>" width="<?echo $arRes["item"][$i]["enclosure"]["width"] ?>" height="<?echo $arRes["item"][$i]["enclosure"]["height"]?>" border="0">
						</td>
					</tr>
				</table>
			<?endif;?>
			<font class="text">
				<?echo $arRes["item"][$i]["description"];?>
				<br>
			</font>
		</td>
	</tr>
	<?endfor;?>
</table>
© «Битрикс», 2001-2024, «1С-Битрикс», 2024