Документация InstantCMS

для администраторов и разработчиков

Инструменты пользователя

Инструменты сайта


dev:integration:rss

Интеграция ленты RSS для своего компонента

В комплекте InstantCMS есть компонент «Генератор RSS», выполняющий генерацию RSS лент на сайте. Архитектура построена таким образом, что позволяет генерировать ленты RSS для любого компонента. Интеграция заключается в:

  • Создание записи в таблице cms_rss_feeds;
  • Создании хука rss_feed_list для получения из него данных;
  • При необходимости, дополнить настройки RSS ленты (её форму) также посредством хуков.

Создание записи в таблице

Если вы делаете компонент, который впоследствии оформите в пакет дополнения, то создание записи в таблице rss_feed_list необходимо делать в установщике пакета.

Типичный SQL запрос на добавление записи выглядит так (на примере компонента «Комментарии»):

INSERT INTO `cms_rss_feeds` (`ctype_name`, `title`, `mapping`, `is_enabled`) VALUES
('comments', 'Комментарии', '---\r\ntitle: target_title\r\ndescription: content_html\r\npubDate: date_pub\r\n', 1);

В поле mapping вы должны в YAML формате указать соответствия полей используемых в самой RSS ленте с полями в вашей записи:

  • Поле title (в примере выше title соответствует полю target_title в таблице комментариев);
  • Поле description (в примере выше поле description соответствует полю content_html в таблице комментариев);
  • Поле pubDate (в примере выше поле pubDate соответствует полю date_pub в таблице комментарие).

Удобнее всего сделать это в массиве, который потом преобразовать в YAML.

Создание хука

Для того, чтобы получить данные для RSS ленты вашего компонента, необходимо создать хук с названием cms_rss_feeds. Обратите внимание, для этого хука не нужно создавать запись в файле manifest.php вашего компонента. Хук вызывается напрямую, в контексте вашего контроллера. Объект $this→request внутри хука будет также в контексте текущего запроса, тип запроса - стандартный.

В хук передаётся один параметр $feed, это массив данных ленты, полученный из базы данных.

Возвращать хук должен массив массивов array($feed, $category, $author). Где, $feed - переданный массив ленты в хук, $category - массив категории, если необходимо, $author - массив данных об авторе, если необходимо.

Если массивы $category и $author в вашем компоненте не актуальны, то они должны быть переданы пустыми, иначе массивы должны содержать:

  • $category - ячейку title с названием категории;
  • $author - ячейку nickname с никнеймом пользователя.
$category = array(
    'title' => 'Название категории'
);
$author= array(
    'nickname ' => 'ЮзерНейм'
);

Задача хука заполнить ячейку $feed['items'] списком данных ленты.

Каждая запись в массиве $feed['items'] должна содержать ячейки target_title и page_url с заголовком и абсолютным URL соответственно. Кроме этого, каждая запись должна содержать значения соответствий поля mapping, которые мы указывали в SQL запросе выше.

Хуки на форму RSS ленты в админке

Формирование URL на ленту

Шаблон RSS ленты

dev/integration/rss.txt · Последнее изменение: 17.09.2018 10:28 — fuze