diff --git a/lib/index.js b/lib/index.js index 6838903..c178e46 100755 --- a/lib/index.js +++ b/lib/index.js @@ -17,22 +17,27 @@ function ifTruePush(condition, array, data) { /** * @param related * @param itemValues + * @param relatedfinity */ -function addRelated(related, itemValues) { - ifTruePush(related, itemValues, { - 'yandex:related': related.map( - function (rel) { - return { - link: [{ - _attr: { - 'url': rel.link, - 'img': rel.image_url - } - }, rel.text] - }; - } - ) +function addRelated(related, itemValues, relatedfinity) { + let relatedResult = related.map(function (rel) { + return { + link: [{ + _attr: { + 'url': rel.link, + 'img': rel.image_url + } + }, rel.text] + }; }); + + if (relatedfinity) { + relatedResult.push({ + _attr: {'type': 'infinity'} + }); + } + + ifTruePush(related, itemValues, {'yandex:related': relatedResult}); } /** @@ -66,7 +71,7 @@ function items(items, channel) { item_values.push({'turbo:content': {_cdata: fullContent}}); if (typeof item.related !== 'undefined') { - addRelated(item.related, item_values); + addRelated(item.related, item_values, item.relatedfinity); } channel.push({item: item_values}); @@ -128,7 +133,8 @@ function YTurbo(options, items) { date: data.date || data.pubDate, content: data.content, menu: data.menu, - related: data.related + related: data.related, + relatedfinity: data.relatedfinity || false, }; this.items.push(item); diff --git a/readme.md b/readme.md index d285f7b..dc0a4ee 100644 --- a/readme.md +++ b/readme.md @@ -45,10 +45,18 @@ feed.item(itemOptions); * `author` _optional_ **string** Автор статьи, размещенной на странице. * `date` **string** Время публикации контента на сайте источника. * `content` **string** Содержимое страницы - * `related` _optional_ **object** Аффилированные ссылки `yandex:related` в конце статьи. - + * `related` _optional_ **array** Аффилированные ссылки `yandex:related` в конце статьи. + * `relatedfinity` _optional_ **bool** Непрерывная лента статей + *Будет добавлено в новых версиях turbo:source, turbo:topic, menu, pubDate как алиас date* +###### related array + related должен содержать массив объектов со следующими опциями: + + * `link` **string** ссылка на статью' + * `image_url` **string** ссылка на изображение к статье + * `text` **string** текст ссылки + ##### Получение XML ```js diff --git a/test/expectedOutput/relatedItem.xml b/test/expectedOutput/relatedItem.xml index 0b266e7..e083e44 100644 --- a/test/expectedOutput/relatedItem.xml +++ b/test/expectedOutput/relatedItem.xml @@ -1 +1 @@ -<![CDATA[title]]>http://example.com/rss.xmlruhttp://example.com/article4?this&thathttp://example.com/article4?this&thatSat, 26 May 2018 21:00:00 GMTLightAir

item title

hello

]]>
related link text 1related link text 2
+<![CDATA[title]]>http://example.com/rss.xmlruhttp://example.com/article4?this&thathttp://example.com/article4?this&thatSat, 26 May 2018 21:00:00 GMTLightAir

item title

Текст ссылки Текст ссылки

hello

]]>
related link text 1related link text 2
diff --git a/test/expectedOutput/relatedItemInfinity.xml b/test/expectedOutput/relatedItemInfinity.xml new file mode 100644 index 0000000..1139f43 --- /dev/null +++ b/test/expectedOutput/relatedItemInfinity.xml @@ -0,0 +1 @@ +<![CDATA[title]]>http://example.com/rss.xmlruhttp://example.com/article4?this&thathttp://example.com/article4?this&thatSat, 26 May 2018 21:00:00 GMTLightAir

item title

hello

]]>
related link text 1related link text 2
diff --git a/test/index.js b/test/index.js index 1d32b06..c6a3399 100644 --- a/test/index.js +++ b/test/index.js @@ -46,6 +46,7 @@ test('related item', function(t) { url: 'http://example.com/article4?this&that', author: 'LightAir', date: 'May 27, 2018 00:00 AM', + menu: 'Текст ссылки Текст ссылки', content: '

hello

', related: [{ link: 'http://example.com/related/post1', @@ -60,3 +61,34 @@ test('related item', function(t) { t.equal(feed.xml(), expectedOutput.relatedItem.trim()); }); + +test('related item', function(t) { + t.plan(1); + let feed = new YTurbo({ + title: 'title', + description: 'description', + link: 'http://example.com/rss.xml', + site_url: '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, 2018 00:00 AM', + content: '

hello

', + relatedfinity: true, + 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' + }] + }); + + t.equal(feed.xml(), expectedOutput.relatedItemInfinity.trim()); +}); \ No newline at end of file