Мне нужно показывать разделы инфоблока (Раздел 1,Раздел 2) и при выборе одного из разделов показывать их подразделы (..Подраздел 1_1..Подраздел 1_2..), но еще и чтобы при выборе подраздела я увидел список, а "выбранность" разделов осталась прежней.
|----------------------------------
| /dev/?SECTION_ID=1&SUBSECTION_ID=11
|----------------------------------
| Раздел 1,Раздел 2 (section.list#1)
| Подраздел 1_1, Подраздел 1_2 (section.list#2)
|
| Элемент 1_1_1
| Элемент 1_1_2
|----------------------------------
Ночкой по-колдовал, добавил к компоненту section.list возможность указывать свой шаблон ссылок и переменную для замены.
У section.list#2 прописал в параметрах шаблон /dev/?SECTION_ID=#PSECTION_ID#&SUBSECTION_ID=#SECTION_ID# и указал переменную для замены #PSECTION_ID#. Таким образом внутри section.list, если активирована подмена путей,то компонент использует этот шаблон и заменит в нем #PSECTION_ID# на значение SECTION_ID, которое пришло от section.list#1. И использует #SECTION_ID# для подстановки "от себя"
и получается ссылка вида /dev/?SECTION_ID=1&SUBSECTION_ID=11 как "в рисунке".
[CODE]
внутри шаблона комплексного компонента
$APPLICATION->IncludeComponent("my.section.list", "", array(
...
"SECTIONID" => 0,
"ENABLE_SECTION_PATH" => "N"
),
$component
);
$APPLICATION->IncludeComponent("my.section.list", "", array(
...
"SECTIONID" => $arParams["SECTIONID"],
"ENABLE_SECTION_PATH" => "Y",
"SECTION_PATH_VARNAME" => "#PARENT_SECTION_ID#",
"SECTION_PATH_TEMPLATE" => "/dev/?SECTION_ID=#PARENT_SECTION_ID#&SUBSECTION_ID=#SECTION_ID#",
),
$component
);
$APPLICATION->IncludeComponent("my.element.list", "", array(
...
"SECTIONID" => $arParams["SUBSECTIONID"],
),
$component
);
[/CODE]
[CODE]
внутри my.section.list
if($arParams["ENABLE_SECTION_PATH"]=="Y"):
$arParams["SECTION_PATH_TEMPLATE"] = str_replace(
$arParams["SECTION_PATH_VARNAME"],
$arParams["SECTIONID"],
$arParams["SECTION_PATH_TEMPLATE"]
);
$res->SetUrlTemplates("",$arParams["SECTION_PATH_TEMPLATE"]);
endif;
[/CODE]