1С-Битрикс: Управление сайтом ASP.Net: расширенная агрегация RSS.

Ключевым моментом технологии продуктов компании 1С-Битрикс для любой платформы (хоть PHP, хоть ASP.NET) является информационный блок.

Информационный блок — сущность, позволяющая каталогизировать и управлять различными типами (блоками) однородной информации.

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

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

Попробуем в рамках «1С-Битрикс: Управление сайтом ASP. NET» осуществить расширенную агрегацию RSS в информационные блоки. Под расширенной агрегацией понимаем следующее: возможность получения и распределения RSS сообщений по различным папкам в зависимости от ключевых слов, заданных в свойствах информационного блока.

Решаемая задача

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

Предположим, что вы создаете на базе решения «Сайт сообщества» CMS «1С-Битрикс: Управление сайтом ASP.NET» некий Клуб любителей новых технологий. Вам с нескольких источников приходят новости IT-технологий «вообще», то есть и новости программного обеспечения и новости компьютерного «железа». Эти новости нужно рассортировать по темам и вывести на разных страницах сайта.

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

Для решения задачи расширенной агрегации нам нужно сделать следующее:

  • Создать тип информационного блока, который будет обслуживать решение задачи.
  • Создать отдельный информационный блок (ib1) для RSS сообщений.
  • Создать отдельный информационный блок (ib2) для вывода сообщений на страницах сайта.
  • Создать структуру разделов в рамках ib2 для вывода на страницах сайта.
  • Создать файлы, обслуживающие агрегатор RSS.
  • Создать страницы на сайте и обеспечить вывод данных из ib2 стандартными средствами CMS.

Чтобы легче было понять смысл этой задачи, посмотрите рабочий пример такой расширенной интеграции.

Создание Типа инфоблока

Создание Типа информационного блока выполняется обычным для «1С-Битрикс: Управление сайтом ASP.NET» способом на странице Контент > Информ. блоки > Типы информ. блоков в Административной части системы. Единственный нюанс, который надо учесть – это установить флажок в поле Использовать древовидный классификатор элементов по разделам, так как нам надо будет использовать разделы для вывода RSS новостей. Пусть тип инфоблока называется Aggregator.

Нажмите на рисунок, чтобы увеличить

Создание первого инфоблока

В рамках созданного типа инфоблока создадим первый инфоблок. Создание инфоблока происходит на странице Контент > Aggregator в Административной части системы.

Ib1 отвечает за получение самих RSS сообщений с сайта-источника. Поэтому при создании инфоблока нам нужно создать поля элементов информационного блока, обеспечивающие выполнение этой задачи. Вот эти поля:

  • Адрес RSS (код SOURCE_URL). Поле для ввода адреса подписки.
  • Период загрузки RSS в часах (код PERIOD). Указание для системы как часто проверять новые сообщения на сайте-источнике.
  • Время хранения записей в днях (0 — навсегда) (код STORAGE_TIME). Параметр, по которому будет проставляться период активности записи. Начало активности – это дата загрузки, конец активности – это дата загрузки + число дней, указанных в этом поле.
  • Имя автора записей по умолчанию (код AUTHOR_NAME). Поле для указания автора записи, как правило, это выводимое название источника.
  • Автоматические теги для записей подписки (код TAGS). Поле для задания собственных тегов. Применяется для подписок, в тематике которых разработчик уверен. При распределении новостей по разделам система будет складывать теги сообщения и теги, введенные в это поле, и по этой сумме производить сортировку.
  • Загружать только анонс (ссылка записи будет открывать оригинальный сайт) (код PREVIEW_ONLY). Система будет загружать только анонсы сообщений, детальное сообщение будет просматриваться пользователем на сайте-источнике. Рекомендуется для сайтов с большой посещаемостью.

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

Нажмите на рисунок, чтобы увеличить

Создание второго инфоблока

Второй инфоблок служит непосредственно инструментом вывода RSS новостей для показа пользователям сайта. Поэтому он получается несколько сложнее. Надо будет создавать не только поля для свойств для элементов, но и поля свойств для разделов.

Поля свойств для элементов информационного блока:

  • Имя автора (код AUTHOR_NAME). Проставляется системой автоматически из свойств сообщения.
  • Ссылка на оригинал записи (код SOURCE_URL). Проставляется системой автоматически из свойств сообщения.
  • Ссылка на комментарии (код COMMENTS_URL). Проставляется системой автоматически из свойств сообщения.

Нажмите на рисунок, чтобы увеличить

Поле свойств для разделов ib2 необходимо только одно: Время хранения записей в днях (0 — навсегда) с кодом STORAGE_TIME. Значение поля аналогично значению одноименного свойства в ib1.

Нажмите на рисунок, чтобы увеличить