Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

catalog.section и обновление iblock (9.0.3)

00 голосов
2
Симптомы:
Стандартный компонент bitrix:catalog.section. Используем в каталоге. Параметр "ID раздела" установлен ={$_REQUEST["SECTION_ID"]} . А элементы не отображаются: Компонент возвращает пустой результат, если находимся в каком-либо разделе инфоблока.
(Элементы существуют, всё активно - и элементы, и разделы, и инфоблок, доступ "на чтение" - всем)

Проблема:
Согласно моего лога 2010-07-20 12:14:50 прошло обновление Updated: iblock (9.0.3). В конце описания есть строка "в метод CIBlockSection::GetList добавлен параметр, позволяющий задавать поля для выборки."

В итоге, возвращаясь к компоненту:
файл bitrix\components\bitrix\catalog.section\component.php (строке 205)
--------------
$arSelect = array(
$arParams["META_KEYWORDS"],
$arParams["META_DESCRIPTION"],
$arParams["BROWSER_TITLE"],
);
--------------
В данном массиве нет поля "ID".
Далее, строка 240-...
--------------
$rsSection = CIBlockSection::GetList(Array(), $arFilter, false, $arSelect);
$rsSection->SetUrlTemplates("", $arParams["SECTION_URL"]);
$arResult = $rsSection->GetNext();
--------------
В результате у меня получается, что массив $arResult содержит только "NAME".
Но код компонента далее использует $arResult["ID"], который естественно отсутствует.
То бишь ожидается, что $arResult["ID"]=$_REQUEST["SECTION_ID"], а получаем $arResult["ID"]=0

Решение:
1. Дождаться обновления от 1С-Битрикс
2. Использовать пользовательское пространство имен для компонентов.
Рецепт примерно такой:
а) В папке /bitrix/components создается папка для Вашего проекта - example
б) Копируем в /bitrix/components/example папку catalog.section
в) Производим изменения в файле /bitrix/components/example/catalog.section/component.php
Например добавление в строке 205 в массиву $arSelect еще и "ID", в принципе, решаем проблему.
г) Используем наш пользовательский компонент example:catalog.section

P.S.: в этом посте важны разделы "Симптомы" и "Решение". А все остальное может быть моим субъективным мнением.
P.S.S: обращение в службу тех.поддержку №169478
спросил 20 Фев, 14 от Alexiaz (320 баллов)

2 Ответы

00 голосов
Установлен модуль "Информационные блоки" 9.0.3. Стандартный компонент bitrix:catalog.section.
Элементы прекрасно отображаются и в разделах, и в подразделах, и в корне каталога.

Если в параметрах компонента не указаны свойства для мета-тегов, то $arResult содержит весь набор полей раздела. Если указаны - то действительно не все.

Однако это никак не сказывается на отображении элементов раздела, т.к. никаких требований к наличию $arResult["ID"] нет.
На первый взгляд ошибка есть только при добавлении раздела в навигационную цепочку (строка 267):
Код
elseif($arResult["ID"] > 0 && $arParams["ADD_SECTIONS_CHAIN"])

Итого. Симптомы:
Элементы раздела показываются. При заданных параметрах META_KEYWORDS, META_DESCRIPTION, BROWSER_TITLE и ADD_SECTIONS_CHAIN раздел не попадает в навигационную цепочку.

Решение:
0. Don't panic ©
1. Не задавать в настройках компонента свойства для установки мета-тегов.
2. Обновить кеш.
ответил 17 Июль, 14 от smileplz (8,020 баллов)
00 голосов
Обновление от 1с-Битрикс было 8 августа, а у меня компонент bitrix:catalog.section не работает. Может кто посмотрит, из-за чего, я первый раз его настраиваю, может что сама не то сделала? При отмеченной галочке "Показывать все элементы, если не указан раздел" отображаются все анонсы инфо-блока. Пробовала различные варианты из предлагаемых в строках: "URL, ведущий на страницу с содержимым раздела" и
"URL, ведущий на страницу с содержимым элемента раздела", но "от перестановки мест слагаемых сумма не меняется". Вот скриншоты настройки:
Рисунок
Рисунок
Рисунок
и если это ошибка от обновлений, то когда её исправят, а то это php не знаю?
ответил 18 Ноя, 14 от Tylenis (100 баллов)

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

0 голосов
0 ответов
0 голосов
1 ответ
0 голосов
1 ответ
спросил 01 Фев, 14 от LaoMao (100 баллов)
0 голосов
4 ответов
спросил 02 Янв, 14 от Lokit (100 баллов)