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

Мелкая ошибка в компоненте catalog.element

00 голосов
1
Или не ошибка? в файле компонента есть строки со 196
Код
      $arSection = false;
      if($arParams["SECTION_ID"] > 0 || strlen($arParams["SECTION_CODE"]) > 0)
      {
         $arSectionFilter = array(
            "IBLOCK_ID"=>$arResult["IBLOCK_ID"],
            "ACTIVE" => "Y",
         );
         
         if($arParams["SECTION_ID"] > 0)
            $arSectionFilter["ID"]=$arParams["SECTION_ID"];
         else
            $arSectionFilter["CODE"]=$arParams["SECTION_CODE"];

         $rsSection = CIBlockSection::GetList(array(), $arSectionFilter);
         $rsSection->SetUrlTemplates("", $arParams["SECTION_URL"]);
         $arSection = $rsSection->GetNext();
      }

смущает вот это
Код
         $arSectionFilter = array(
            "IBLOCK_ID"=>$arResult["IBLOCK_ID"],
            "ACTIVE" => "Y",
         );

К моменту выполнения этого блока $arResult еще пустой, поэтому IBLOCK_ID оказывается пустым, поэтому при выборке по символическому коду раздела, при наличии других разделов с таким же символическим кодом в других инфоблоках в результирующем $arResult["SECTION"] - оказывает первый попавшийся раздел с таким кодом. Не сильно мешает, но иногда неприятно.
Решается заменой
Код
"IBLOCK_ID"=>$arResult["IBLOCK_ID"],

на
Код
"IBLOCK_ID"=>$arParams["IBLOCK_ID"],

То есть значение IBLOCK_ID забираем из параметров компонента.

Спасибо, безбажной вам работы
спросил 12 Июнь, 13 от luc (140 баллов)

1 Ответ

00 голосов
Спасибо, исправил.
ответил 12 Июнь, 13 от Miso (740 баллов)

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

0 голосов
2 ответов
0 голосов
3 ответов
+1 голос
1 ответ
спросил 26 Сен, 16 от loony (540 баллов)
0 голосов
2 ответов
0 голосов
0 ответов