Пытаясь освоить этот компонент, столкнулся с тем, что он воспринимает подразделы инфоблока как разделы предыдущего уровня. То есть, если у раздела Комедии(comedy) инфоблока Видео (video) есть подраздел Русские (rus), то путь к элементу этого подраздела будет не video/comedy/rus/элемент, а video/rus/элемент. Массив этих строк заполняется, похоже, в компоненте menu.section где то здесь:
if(($arParams["ID"] > 0) && (intval($arVariables["SECTION_ID"]) <= 0) && CModule::IncludeModule("iblock"))
{
$arSelect = array("ID", "IBLOCK_ID", "DETAIL_PAGE_URL", "IBLOCK_SECTION_ID");
$arFilter = array(
"ID" => $arParams["ID"],
"ACTIVE" => "Y",
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
);
$rsElements = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
if(($arParams["IS_SEF"] === "Y") && (strlen($arParams["DETAIL_PAGE_URL"]) > 0))
$rsElements->SetUrlTemplates($arParams["SEF_BASE_URL"].$arParams["DETAIL_PAGE_URL"]);
while($arElement = $rsElements->GetNext())
{
$arResult["ELEMENT_LINKS"][$arElement["IBLOCK_SECTION_ID"]][] = $arElement["~DETAIL_PAGE_URL"];
}
}
Верно ли то, что store.menu.section не может правильно работать с глубокими вложениями у инфоблоков?
if(($arParams["ID"] > 0) && (intval($arVariables["SECTION_ID"]) <= 0) && CModule::IncludeModule("iblock"))
{
$arSelect = array("ID", "IBLOCK_ID", "DETAIL_PAGE_URL", "IBLOCK_SECTION_ID");
$arFilter = array(
"ID" => $arParams["ID"],
"ACTIVE" => "Y",
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
);
$rsElements = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
if(($arParams["IS_SEF"] === "Y") && (strlen($arParams["DETAIL_PAGE_URL"]) > 0))
$rsElements->SetUrlTemplates($arParams["SEF_BASE_URL"].$arParams["DETAIL_PAGE_URL"]);
while($arElement = $rsElements->GetNext())
{
$arResult["ELEMENT_LINKS"][$arElement["IBLOCK_SECTION_ID"]][] = $arElement["~DETAIL_PAGE_URL"];
}
}
Верно ли то, что store.menu.section не может правильно работать с глубокими вложениями у инфоблоков?