readme.md
## turbo-rss
[![Maintainability](https://api.codeclimate.com/v1/badges/6525d2aabf20185b68b6/maintainability)](https://codeclimate.com/github/LightAir/turbo-rss/maintainability)
[![Test Coverage](https://api.codeclimate.com/v1/badges/6525d2aabf20185b68b6/test_coverage)](https://codeclimate.com/github/LightAir/turbo-rss/test_coverage)
[![Build Status](https://app.travis-ci.com/LightAir/turbo-rss.svg?branch=master)](https://app.travis-ci.com/LightAir/turbo-rss)
[![npm](https://img.shields.io/badge/npm%20package-2.0.0-green.svg?longCache=true&style=flat)](https://www.npmjs.com/package/turbo-rss)
![license](https://img.shields.io/packagist/l/doctrine/orm.svg?longCache=true&style=flat)
>Генератор RSS разметки для сервиса Турбо-страницы https://yandex.ru/support/webmaster/turbo/connection.html
### Использование
#### Создание канала
```js
var TR = require('turbo-rss');
var feed = new TR(feedOptions);
```
##### `Опции канала`
* `title` **string** Название RSS-канала.
* `link` **url string** Домен сайта, данные которого транслируются.
* `description` _optional_ **string** Описание канала одним предложением. Не используйте HTML-разметку.
* `language` _optional_ **string** Язык статьи по стандарту ISO 639-1. По умолчанию ru.
*Будет добавлено в новых версиях turbo:analytics, turbo:adNetwork, на текущий момент можно добавить в интерфейсе Яндекс Вебмастер*
#### Добавление страницы в канал
```js
feed.item(itemOptions);
```
##### itemOptions
* `title` **string** Заголовок страницы.
* `subheading` _optional_ **string** Подзаголовок страницы.
* `image_url` _optional_ **url string** Адрес изображения, которое используется в качестве обложки. Изображение может быть в любом формате.
* `image_caption` _optional_ **string** Подпись к изображению обложки.
* `link` **url string** URL страницы сайта, для которой нужно сформировать Турбо-страницу.
* `author` _optional_ **string** Автор статьи, размещенной на странице.
* `date` или `pubDate` **string** Время публикации контента на сайте источника. Передается в формате RFC-822.
* `content` **string** Содержимое страницы
* `menu` _optional_ **array** Внимание! Меню будет отображаться только в том случае, если в настройках на странице Яндекс Вебмастер -> Турбо-страницы -> Настройки, содержимое 'Меню Турбо-страниц' пустое!
* `breadcrumbs` _optional_ **array** Навигационная ссылка https://yandex.ru/dev/turbo/doc/rss/elements/header.html#breadcrumbs
* `related` _optional_ **array** Аффилированные ссылки `yandex:related` в конце статьи. Вы можете разместить ссылки на другие ресурсы или настроить отображение непрерывной ленты статей, реализованной, например с помощью AJAX.
* `relatednfinity` _optional_ **bool** Непрерывная лента статей (Параметр был переименован из relatedfinity)
* `turboSource` _optional_ **string** URL страницы-источника, который можно передать в Яндекс.Метрику.
* `turboTopic` _optional_ **string** Заголовок страницы, который можно передать в Яндекс.Метрику.
* `goals` _optional_ **array** массив типа: { _id_ - внутренний идентификатор цели (turbo-goal-id), _name_ - имя цели, _counter_id_ - id счётчика яндекс-метрики }
* `turboEnabled`_optional_ **bool** Принудительная установка атрибута "turbo". По умолчанию true. Установка в false позволит скрыть отображение турбо-страницы
###### menu array
menu должен содержать массив объектов со следующими опциями:
* `link` **url string** ссылка
* `text` **string** текст ссылки. не должен содержать html
###### breadcrumbs array
Один элемент хлебных крошек должен содержать массив объектов со следующими опциями:
* `link` **url string** ссылка
* `text` **string** текст ссылки (не должен содержать html)
###### related array
related должен содержать массив объектов со следующими опциями:
* `link` **url string** ссылка на статью
* `image_url` **url string** ссылка на изображение к статье
* `text` **string** текст ссылки. Не должен содержать html
##### Получение XML
```js
var xml = feed.xml();
```
Вернёт XML как строку.
## Пример использования
```js
var TR = require('turbo-rss');
var feed = new TR({
title: 'title',
description: 'description',
link: 'http://example.com',
});
feed.item({
title: 'item title',
image_url: 'http://example.com/example.png',
url: 'http://example.com/article4?this&that',
author: 'LightAir',
date: 'May 27, 2012',
content: '<p>hello</p>',
goals: [{
type: "yandex",
id: "turbo-goal-id",
counter_id: "12345",
name: "order",
}],
menu: [{
link: 'http://example.com/',
text: 'Главная'
}, {
link: 'http://example.com/about',
text: 'О сайте'
}],
related: [{
link: 'http://example.com/related/post1',
image_url: 'http://example.com/i/img1.jpg',
text: 'related link text 1'
}, {
link: 'http://example.com/related/post2',
image_url: 'http://example.com/i/img2.jpg',
text: 'related link text 2'
}]
});
var xml = feed.xml();
```
## Тестирование
Для запуска тестов выполните `npm test`.
```sh
$ npm test
```
## Спасибо
@jahglow
@vvmspace
@crackosok