Ошибка получения rss ленты битрикс

Привет!
Есть проблема — не выводится RSS-лента стандартным компонентом Битрикса.

https://prnt.sc/tnqds8

RSS в php здесь:

https://open.irkobl.ru/rss.php

Если ее же залить в формате .rss, все работает отлично.
Другой сайт ее выводит.
Обновления не устанавливались с 15 года, [LICENSE_NOT_ACTIVE_A] Закончился срок получения обновлений
Есть какие-то варианты? Может, какой-нибудь костыль?
Спасибо.

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

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

Перед обращением к информационным блокам извне, разрешаем использование RSS в настройках информационного блока.

Контент > Инфоблоки > Типы инфоблоков
1_tipy_infoblokov

Выбираем тип информационных блоков, для которых необходимо настроить использование RSS.
2_vybor-tipa-infobloka

На форме редактирования параметров, переходим на вкладку – «Дополнительно».
3_parametry-tipa-infobloka

Выставляем флажок для параметра «Использовать экспорт в RSS», сохраняем параметры. Теперь мы можем обратиться к RSS информационного блока.

Делаем запрос таким образом:
http://example.com/bitrix/rss.php?ID=1&LANG=ru&TYPE=news&LIMIT=10

В общем, для доступа к RSS файлу необходимо выполнить запрос к скрипту /bitrix/rss.php, с параметрами ID, LANG, TYPE и LIMIT.

Посмотрим, что обозначают эти параметры:
ID – ID инфоблока или символьный код инфоблока;
LANG – Сайт инфоблока;
TYPE – Тип инфоблока;
LIMIT – Количество элементов которые следует отображать.

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

Для того чтобы распространять новости по различным социальным сетям нужно использовать отдельные сервисы кросспостинга либо своё решение реализующее данную возможность. Как правило все эти сервисы используют RSS ленту, чтобы публиковать новости. Система кросспостинга периодически (по расписанию) запрашивает RSS ленту сайта, разбирает её на составляющие части и принимает решение. Публиковать новость (если она еще не опубликована) или не публиковать её (следовательно уже опубликована).

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

[здесь и далее вам нужно заменить https://www.example.com/ на URL своего сайта]

На странице: https://www.example.com/bitrix/admin/iblock_type_admin.php?PAGEN_1=1&SIZEN_1=10&lang=ru

[где «news» это ID типа инфоблока]

https://www.example.ru/bitrix/admin/iblock_type_edit.php?lang=ru&ID=news

После этих манипуляций в свойствах нужного инфоблока:

Появляется возможность редактировать параметры RSS:

Чтобы включить отображение ссылки на RSS-фид (иконка RSS) нужно (в режиме редактирования битрикс) в включаемом компоненте bitrix:news нажать на шестерёнку

Далее в вкладке «Настройки RSS» выставить нужные настройки RSS:

Также необходимо определить порядок сортировки новостей (вкладка «Источник данных»). Как правило Первичная сортировка происходит «по дате начала активности» (по убыванию), и вторичная сортировка «по ID» (по убыванию):

Просмотр RSS фида. Обратите внимание, что вверху самые свежие новости…

А внизу RSS… старые записи. Почему так может проиходить? Мы же правильно выставили настройки RSS. Правильно выставили направления сортировок, и так далее. Но с завидным упорством вылезают старые записи.

Начал копать, и выяснил что:

Старые новости имели пустоту в поле начала активности (поле не было заполнено). Такие события нежелательны в принципе.

После заполнения этого поля, сохранения, обновления кеша вывода компонента RSS ленты будет выводиться…

Корректный вывод RSS ленты:

Следующим шагом будет
проверка настройки «Поля элементов инфоблока» на странице
https://www.example.com/bitrix/admin/iblock_edit.php?type=news&lang=ru&ID=1&admin=Y&return_url=iblock_section_admin.php%3FIBLOCK_ID%3D44%26type%3Dcatalog%26lang%3Dru%26find_section_section%3D0

Где желательно поставить в поле «Начало активности» значение «Текущие дата и время», а также поставить галочку «Обязательное поле».

Благодарю за внимание.

Укрощение строптивых или как исправить ошибки RSS

Как исправить ошибки RSSRSS сегодня используется повсеместно, и не только для получения свежих новостей, но и как канал, по которому можно транслировать свои собственные новости автоматом в другие блоги и сообщества, в социальные сети, на Subscribe, создавая, таким образом, мощный эффект присутствия.

О том, как прожечь свой RSS через FeedBurner не писал только ленивый (я, то есть).  Я и сейчас не буду – информации по этой теме – море, и любой желающий всегда найдет сотни описаний и выберет по своему вкусу и пониманию.

Однако в последнее время мне частенько пишут с жалобами на ошибки RSS: невозможно прожечь фид, feedburner не может идентифицировать источник фида, возникают какие-то ошибки в RSS и как исправить ошибки RSS фидов и т.д.

Да, к сожалению, иной раз в этих каналах встречаются ошибки, из-за которых FeedBurner категорически отказывается признавать RSS за что-то удобоваримое.  Дело в том, что RSS — это, прежде всего, XML . Из описания видно, что XML-документы изначально должны быть безупречны. В отличие от HTML, DOM анализатор обязан отказаться от разбора XML документа, если в документе есть ошибки. Поэтому проверять свой RSS на валидность просто необходимо. Существуют множество инструментов для проверки RSS-каналов, например — http://feedvalidator.org/, http://validator.w3.org/feed/

Но это все скучная теория, а прожигать фиды нужно не когда-то в отдаленном светлом будущем, когда все будут знать, что такое XML и писать его код корректно, а уже сегодня. Поэтому, засучив рукава, мы укротим строптивые фиды. Шаг за шагом, от простого к более сложному.

Шаг первый – удаление пустых строк

Плагин Fix RSS Feed  для WordPress, который помогает исправить ошибки RSS фидов такие, как: “Error on line 2: The processing instruction target matching “[хХ][мМ][LL]” is not allowed.” когда вы пытаетесь прожечь свой RSS Feed через FeedBurner, или ошибка “XML or text declaration not at start of entity” которая появляется в браузере FireFox, или ошибка, которая возникает в браузере Opera “XML declaration not at beginning of document” и т.д.

Установка и активация этого плагина стандартна

Инструкция. Как исправить ошибки RSS с помощью плагинов?

Плагин Fix RSS Feed  работает автоматически буквально по нажатию клавиши.

1. Откройте консоль админа WordPress2.

2. Выберите Параметры ->Исправить RSS Feed

3. Отметьте «проверить папки WordPress и удалить ошибки»

4. Нажмите кнопку «исправить RSS Feed».

5. Плагин проверит во всех папках (кроме wp-admin) PHP файлы на предмет пустых строк в заголовке и в конце файла. Все обнаруженные пустые строки будут удалены. На коде это не отразится, т.ч. не переживайте

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

7. По окончанию, попробуйте скормить вашу ленту FeedBurner’у. Если проблема была в пустых строках – он ее с удовольствием съест прожжет

Скачать Fix RSS Feed плагин для WordPress

Если фокус не удался, т.е. пустых строк нет или они ликвидированы, но ленту все равно не принимают, переходим к шагу второму

Шаг второй – проверка и удаление BOM (п>ї)

Многие программы Windows (включая Блокнот) добавляют байты 0xEF, 0xBB, 0xBF в начале любого документа, сохраняемого в кодировке UTF-8. Поскольку любимый WordPress живет именно в этой кодировке, не часто, но в структуру его файлов эти символы попадают. Причем, они могут попадать не обязательно в файлы фидов, даже если они затесались в файлик какого-то плагина, RSS уже может показаться FeedBurner’у верхом непристойности.

Естественно, искать и бить их вручную мухобойкой не получится – нужно знать, куда целиться, да и много у вордпресса файлов. Смотреть их все просто лениво. Но есть еще на свете добрые люди. Один из них, по имени Антон, написал утилитку utf8-bom-remover для поиска и удаления BOM локально, еще до заливки файлов на сервер.

А здесь он показал, как эта его утилитка выглядит в работе http://anton-pribora.ru/projects/recoder/

Проделав эту нехитрую операцию, идем с хлебом-солью нашим фидом к FeedBurner’у: Откушайте, мол, господин хороший, мы от чистого сердца, чистыми руками и с чистой совестью…

Смотрим результат. Если проблема была с BOM, нам повезло. Если нет, придется принимать более жесткие меры

Шаг третий – жесткие меры

Заходим через FTP менеджер в директорию (папку) wp-includes, и открываем в любом редакторе, который корректно работает с кодировкой  UTF-8 без BOM (например Notepad++), файлы: «feed-rss.php», «feed-rss2.php», «feed-rss2-comments.php», «feed-atom.php», «feed-rdf.php».

В начале каждого из них находим строчку: <?php echo ‘<?xml version=»1.0″ encoding=»‘.get_option (‘blog_charset’).’»?’.’>’; ?>, и  удаляем ее.

Обратите внимание: если эта строка начинается не с <?php echo , а просто echo заключительный  ?> удалять не нужно

Сохраняем файлы. И (сюрприз!) опять идем жечь наш фид. Смотрим результат. Чаще всего срабатывает, но бывают и исключения. Тогда шаг последний

Шаг последний – крайние меры

Опять заходим в директорию wp-includes и редактируем файлы feed-rss2.php и feed-rss2-comments.php. В файле убираем первые 13-14 строк вплоть до
<rss version=»2.0″
xmlns:content=»http://purl.org/rss/1.0/modules/content/»

При прожиге на FeedBurner из вариантов выбираем RSS2 (вообще-то, он стоит по умолчанию).

Вуаля! Теперь все работает!

Ну, а если и теперь не работает и FeedBurner по-прежнему обнаруживает ошибки RSS, то просто переустановите движок и прожгите фид ДО того, как навешаете на блог любимые плагины.

Главная » Цифровой мир и разработка » Турбо-страницы Яндекс и Битрикс

Битрикс Турбо-страницы Яндекс

Турбо-страницы Яндекс и Битрикс

Как подключить турбо-страницы Яндекс к CMS Битрикс

В стандартном пакете Битрикса есть комплексный компонент «Новости» (bitrix:news), в который встроен компонент bitrix:rss.out, отвечающий за создание RSS фида. В настройках компонента RSS можно выставить параметр для создания ленты с разметкой для «Яндекс Новостей», но разметка для турбо-страниц на данный момент в ней отсутствует.
Так вот, если вы уже используете или хотите задействовать стандартный компонент новостей + rss, вы можете адаптировать шаблон rss фида под турбо страницы, для этого потребуется выполнить несколько шагов.

Подключаем турбо-страницы к Новостям Битрикса

  1. Создаем новый раздел на сайте, например, yandex-turbo. В этом разделе будет создан файл index.php и откроется в визуальном редакторе, удалите лишний текст из этого файла и вставьте в него компонент из правой колонки: «Контент -> RSS -> RSS новости (экспорт)».
  2. Теперь ваша страница с RSS лентой доступна по адресу: ваш-сайт.ru/yandex-turbo/
    Возможно у вас выйдет ошибка, например «Информационный блок не найден» или другая. В любом случае лучше проверить настройки подключения.
    Для этого откройте файловый менеджер, в корне сайта найдите папку yandex-turbo (или ваше название/путь к ней), в ней откройте (редактировать как php) тот самый файл index.php.
    Скорее всего внутри файла будет что-то наподобие этого:

    <?
    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
    $APPLICATION->SetTitle("Новый раздел");
    ?><?$APPLICATION->IncludeComponent(
    	"bitrix:rss.out",
    	".default",
    Array(),
    false
    );?><?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
    ?>
    

    Но нам нужно выставить параметры для подключения компонента к инфоблоку + сделать вывод на пустой странице, без какого-либо дизайна. Примерно таким будет ваш код:

    <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");?>
    <?$APPLICATION->IncludeComponent(
     "bitrix:rss.out",
     ".default",
     Array(
      "IBLOCK_TYPE" => "news",
      "IBLOCK_ID" => "1",
      "SECTION_ID" => "",
      "SECTION_CODE" => "",
      "NUM_NEWS" => "20",
      "NUM_DAYS" => "30",
      "RSS_TTL" => "60",
      "YANDEX" => "Y",
      "SORT_BY1" => "ACTIVE_FROM",
      "SORT_ORDER1" => "DESC",
      "SORT_BY2" => "SORT",
      "SORT_ORDER2" => "ASC",
      "FILTER_NAME" => "",
      "CACHE_TYPE" => "A",
      "CACHE_TIME" => "3600",
      "CACHE_NOTES" => "",
      "CACHE_FILTER" => "N",
      "CACHE_GROUPS" => "Y"
     ),
    false
    );?>
    <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");?>
    

    Важные для нас строки:

    • «.default», // Указываем шаблон компонента, но если вы скопировали компонент и шаблон компонента (рекомендую скопировать) в своё пространство имён, то может отличаться.
    • «IBLOCK_TYPE» => «news», // Здесь указываем код инфоблока (посмотреть можно в админке, идем по пути: Контент -> Инфоблоки -> Типы инфоблоков -> Новости -> Ваш Инфоблок).
    • «IBLOCK_ID» => «1», // Указываем ID инфоблока, смотрим там же.

    Сохраняем файл, после этого у вас уже должен появится стандартный RSS фид с синтаксисом пригодным для сервиса «Яндекс Новости».

  3. Третьим шагом мы поправим баг парсера компонента rss.out.php. Для этого перейдите в файловый менеджер и найдите файл: bitrix -> components -> bitrix -> rss.out -> component.php
    Откройте его (редактировать как php), найдите строку 325:
    $arItem["full-text"] = htmlspecialcharsbx(htmlspecialcharsback($arElement["DETAIL_TEXT"]));
    

    Поменяйте ее на строку:

    $arItem["full-text"] = /*htmlspecialcharsbx(*/htmlspecialcharsback($arElement["DETAIL_TEXT"])/*)*/;
    

    Это не совсем баг, но данное экранирование символов преобразует все html теги в спец-символы, а нам нужен полноценный вывод разметки в новости. Сохраните файл.

  4. Осталось поправить шаблон rss, который формирует структуру xml файла.
    Если вы скопировали шаблон компонента в вашу тему, то файл по пути: bitrix -> templates -> ваша-тема -> components -> bitrix -> rss.out -> .default -> template.php
    Если вы хотите отредактировать шаблон rss.out.php в ядре битрикса, то путь другой: bitrix -> components -> bitrix -> rss.out -> templates -> .default -> template.php

    Редактируем template.php

    • В элемент <rss version=»2.0″> нужно добавить строчку xmlns:turbo=»http://turbo.yandex.ru»
    • В элемент <item> добавить turbo=»true»
    • Внутрь получившегося элемента <item turbo=»true»> нужно добавить
      <turbo:content>
      	<![CDATA[
      		<figure>
      			<img src="<?=$arItem["enclosure"]["url"]?>" />
      		</figure>
      		<?
      			$yandexText = $arItem["full-text"];
      			$yandexText = preg_replace('/(<img.+?>)/iu','<figure>$1</figure>', $yandexText );
      			echo $yandexText;
      		?>
      	]]>
      </turbo:content>
      

Турбо-страницы готовы к валидации

Вот и все, ваша ссылка ваш-сайт.ru/yandex-turbo/ готова для прохождения валидации в веб-мастере Яндекса. Способ конечно не самый красивый, но на данный момент других решений не нашел, старался изложить максимально подробно, возможно что-то упустил, пишите в комментариях!

6 комментариев

  1. Огромное тебе СПАСИБО

  2. не работает, пишет: XML-элементы указаны некорректно
    стр.
    поз.
    1
    64 Ошибка в конструкции атрибута

    1. Мария, не могу сказать на вскидку в чем проблема, нужно посмотреть xml документ.

  3. Редактируем template.php
    можно ли увидеть пример кода это файла, что то я не пойму как в элемент добавить turbo=»true»

  4. В элемент добавить turbo=»true»

    можно ли пример кода как должно выглядеть?

Оставить комментарий


Не могу настроить модуль на импорт rss в битриксе,
вот часть кода:

$arRes = CIBlockRSS::GetNewsEx("www.example.ru", 80, "/bitrix/rss.php", "ID=3&LANG=ru&TYPE=news&LIMIT=5");

Вопрос: будет ли работать на localhost’е, какой нужно указать порт если сайт «лежит» на localhost’е и где можно посмотреть ID нужного мне инфоблока

задан 25 сен 2018 в 13:24

AlvarezKM's user avatar

localhost по умолчанию работает на 80 порте, что бы убедиться выполните команду netstat -a -o и посмотрите кто крутиться на 80 порту.
ID инфоблока виден в URL, GET параметре IBLOCK_ID если открыть нужный инфоблок.
На localhost’е должен работать так как вы делаете внешний запрос в интернет,а не наоборот.

ответ дан 25 сен 2018 в 14:01

Игорь Браницкий's user avatar

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

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

Перед обращением к информационным блокам извне, разрешаем использование RSS в настройках информационного блока.

Контент > Инфоблоки > Типы инфоблоков
1_tipy_infoblokov

Выбираем тип информационных блоков, для которых необходимо настроить использование RSS.
2_vybor-tipa-infobloka

На форме редактирования параметров, переходим на вкладку – «Дополнительно».
3_parametry-tipa-infobloka

Выставляем флажок для параметра «Использовать экспорт в RSS», сохраняем параметры. Теперь мы можем обратиться к RSS информационного блока.

Делаем запрос таким образом:
http://example.com/bitrix/rss.php?ID=1&LANG=ru&TYPE=news&LIMIT=10

В общем, для доступа к RSS файлу необходимо выполнить запрос к скрипту /bitrix/rss.php, с параметрами ID, LANG, TYPE и LIMIT.

Посмотрим, что обозначают эти параметры:
ID – ID инфоблока или символьный код инфоблока;
LANG – Сайт инфоблока;
TYPE – Тип инфоблока;
LIMIT – Количество элементов которые следует отображать.

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

Для того чтобы распространять новости по различным социальным сетям нужно использовать отдельные сервисы кросспостинга либо своё решение реализующее данную возможность. Как правило все эти сервисы используют RSS ленту, чтобы публиковать новости. Система кросспостинга периодически (по расписанию) запрашивает RSS ленту сайта, разбирает её на составляющие части и принимает решение. Публиковать новость (если она еще не опубликована) или не публиковать её (следовательно уже опубликована).

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

[здесь и далее вам нужно заменить https://www.example.com/ на URL своего сайта]

На странице: https://www.example.com/bitrix/admin/iblock_type_admin.php?PAGEN_1=1&SIZEN_1=10&lang=ru

[где «news» это ID типа инфоблока]

https://www.example.ru/bitrix/admin/iblock_type_edit.php?lang=ru&ID=news

После этих манипуляций в свойствах нужного инфоблока:

Появляется возможность редактировать параметры RSS:

Чтобы включить отображение ссылки на RSS-фид (иконка RSS) нужно (в режиме редактирования битрикс) в включаемом компоненте bitrix:news нажать на шестерёнку

Далее в вкладке «Настройки RSS» выставить нужные настройки RSS:

Также необходимо определить порядок сортировки новостей (вкладка «Источник данных»). Как правило Первичная сортировка происходит «по дате начала активности» (по убыванию), и вторичная сортировка «по ID» (по убыванию):

Просмотр RSS фида. Обратите внимание, что вверху самые свежие новости…

А внизу RSS… старые записи. Почему так может проиходить? Мы же правильно выставили настройки RSS. Правильно выставили направления сортировок, и так далее. Но с завидным упорством вылезают старые записи.

Начал копать, и выяснил что:

Старые новости имели пустоту в поле начала активности (поле не было заполнено). Такие события нежелательны в принципе.

После заполнения этого поля, сохранения, обновления кеша вывода компонента RSS ленты будет выводиться…

Корректный вывод RSS ленты:

Следующим шагом будет
проверка настройки «Поля элементов инфоблока» на странице
https://www.example.com/bitrix/admin/iblock_edit.php?type=news&lang=ru&ID=1&admin=Y&return_url=iblock_section_admin.php%3FIBLOCK_ID%3D44%26type%3Dcatalog%26lang%3Dru%26find_section_section%3D0

Где желательно поставить в поле «Начало активности» значение «Текущие дата и время», а также поставить галочку «Обязательное поле».

Благодарю за внимание.

  • Ошибка получения ip адреса wifi
  • Ошибка получения hwid overwolf
  • Ошибка получение данных объектов обработано 0 синхронизация
  • Ошибка получатель не дал согласие на получение средств через сбп
  • Ошибка положения руля калина