Технический сбой

Сайт временно работает в режиме только для чтения, идут восстановительные работы. Приносим свои извинения за неудобства.
DLE FAQ » Все вопросы » Общие вопросы » Как записывать в БД все блоки из Rss ленты при помощи модуля AutoRss?

Как записывать в БД все блоки из Rss ленты при помощи модуля AutoRss?


     tags, AutoRSS, теги    Общие вопросы, Общие вопросы по PHP, Модули, Ламерские вопросы    2553

вопрос
Здравствуйте!
Есть вопрос по AutoRss. Возможно кто-то уже решал подобный вопрос.
На одном из новостных сайтов стоит данный модуль, который периодически наполняет новостями ресурс, добавляя при этом теги, но он берет первый тег из строки в rss (...). Но часто в лентах есть несколько подобных блоков, как возможно брать все данные блоки, объединять и выводить в теги (1, 2, 3)?

Ответил: Тимур


Может кому пригодится
Находим это
		$tags    = $item->get_category();
		$rssTags = false;
		if ($tags) {
			$rssTags = entryDecode($tags->get_term());
		}
Меняем на это
		$rssTags = '';
		foreach ($item->get_categories() as $tags)
			{
				$rssTags .= $tags->get_label() . ',';

			}
Отредактировал 2-04-2019, 23:56 - Flash
Причина: Грамматические ошибки

3 комментария

Тимур
Юзер

Тимур - -

На одном из новостных сайтов стоит данный модуль, который периодически наполняет новостями ресурс, добавляя при этом теги, но он берет первый тег из строки в rss
<category>...</category>
. Но часто в лентах есть несколько подобных блоков, как возможно брать все данные блоки, объединять и выводить в теги (1, 2, 3)?

tcse
Юзер

tcse - -

в актуальной версии AutoRSS https://github.com/tcse/DLE-AutoRSS
категории RSS фида добавляются все, через запятую.

378 строка

// Категории источника (они же теги)
		$tags    = $item->get_category();
		$rssTags = false;
		if ($tags) {
			$rssTags = entryDecode($tags->get_term());
		}
		$_rsst  = explode(', ', $rssTags);
		$_itags = explode(', ', $rssItem['tags']);
		$_rsst  = (trim($_rsst[0]) != '' && $rssItem['allowRssTags'] == 1) ? $_rsst : array();
		$_itags = (trim($_itags[0]) != '') ? $_itags : array();
		$_atags = array_merge($_itags, $_rsst);
		$mergedRssTags = implode(', ', $_atags);
		$newsItem['tags'] = $mergedRssTags;


копать, если что тут.

Тимур
Юзер

Тимур - -

В том то и дело что не добавляются.
Решил вопрос другим способом.
		$rssTags = '';
		foreach ($item->get_categories() as $tags)
			{
				$rssTags .= $tags->get_label() . ',';

			}
		$_rsst  = explode(', ', $rssTags);
		$_itags = explode(', ', $rssItem['tags']);

		$_rsst  = (trim($_rsst[0]) != '' && $rssItem['allowRssTags'] == 1) ? $_rsst : array();
		$_itags = (trim($_itags[0]) != '') ? $_itags : array();
		$_atags = array_merge($_itags, $_rsst);

		$mergedRssTags = implode(', ', $_atags);

		$newsItem['tags'] = $mergedRssTags;

Похожие вопросы

наверх