Симптомы:
Стандартный компонент 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
Стандартный компонент 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