имеется 3 компонента
необходимо чтобы при выборе элемента в первом компоненте отображались его разделы и чтобы при выборе одного из подразделов 2 компонента 3 менялся а 2 нет тоесть зависел от раздела 1 компонента даже если во 2 есть иерархия.
Пробовал сделать но так как ток недавно этим занимаюсь не очень получилось
подскажите в чем ошибка
это component.php
________________________________
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
/*************************************************************************
Processing of received parameters
*************************************************************************/
if(!isset($arParams["CACHE_TIME"]))
$arParams["CACHE_TIME"] = 36000000;
$arParams["IBLOCK_TYPE"] = trim($arParams["IBLOCK_TYPE"]);
$arParams["IBLOCK_ID"] = intval($arParams["IBLOCK_ID"]);
$arParams["SECTION_ID"] = intval($arParams["SECTION_ID"]);
$arParams["SECTION2_ID"] = intval($arParams["SECTION_ID"]);;
$arParams["SECTION_CODE"] = trim($arParams["SECTION_CODE"]);
$arParams["SECTION_URL"]=trim($arParams["SECTION_URL"]);
$arParams["TOP_DEPTH"] = intval($arParams["TOP_DEPTH"]);
if($arParams["TOP_DEPTH"] <= 0)
$arParams["TOP_DEPTH"] = 2;
$arParams["COUNT_ELEMENTS"] = $arParams["COUNT_ELEMENTS"]!="N";
$arParams["ADD_SECTIONS_CHAIN"] = $arParams["ADD_SECTIONS_CHAIN"]!="N"; //Turn on by default
//echo '<pre>'; print_r($arParams); echo '</pre>';
$arResult["SECTIONS"]=array();
/*************************************************************************
Work with cache
*************************************************************************/
if($this->StartResultCache(false, ($arParams["CACHE_GROUPS"]==="N"? false: $USER->GetGroups())))
{
if(!CModule::IncludeModule("iblock"))
{
$this->AbortResultCache();
ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED"));
return;
}
$arFilter = array(
"ACTIVE" => "Y",
"GLOBAL_ACTIVE" => "Y",
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
);
$arSelect = array();
if(isset($arParams["SECTION_FIELDS"]) && is_array($arParams["SECTION_FIELDS"]))
{
foreach($arParams["SECTION_FIELDS"] as $field)
if(is_string($field) && !empty($field))
$arSelect[] = $field;
}
if(!empty($arSelect))
{
$arSelect[] = "ID";
$arSelect[] = "NAME";
$arSelect[] = "LEFT_MARGIN";
$arSelect[] = "RIGHT_MARGIN";
$arSelect[] = "DEPTH_LEVEL";
$arSelect[] = "IBLOCK_ID";
$arSelect[] = "IBLOCK_SECTION_ID";
$arSelect[] = "LIST_PAGE_URL";
$arSelect[] = "SECTION_PAGE_URL";
}
if(isset($arParams["SECTION_USER_FIELDS"]) && is_array($arParams["SECTION_USER_FIELDS"]))
{
foreach($arParams["SECTION_USER_FIELDS"] as $field)
if(is_string($field) && preg_match("/^UF_/", $field))
$arSelect[] = $field;
}
$arResult["SECTION"] = false;
if(strlen($arParams["SECTION_CODE"])>0)
{
$arFilter["CODE"] = $arParams["SECTION_CODE"];
$rsSections = CIBlockSection::GetList(array(), $arFilter, true, $arSelect);
$rsSections->SetUrlTemplates("", $arParams["SECTION_URL"]);
$arResult["SECTION"] = $rsSections->GetNext();
}
elseif($arParams["SECTION2_ID"]>0)
{
$arFilter["ID"] = $arParams["SECTION2_ID"];
$rsSections = CIBlockSection::GetList(array(), $arFilter, true, $arSelect);
$rsSections->SetUrlTemplates("", $arParams["SECTION_URL"]);
$arResult["SECTION"] = $rsSections->GetNext();
}
if(is_array($arResult["SECTION"]))
{
unset($arFilter["ID"]);
unset($arFilter["CODE"]);
$arFilter["LEFT_MARGIN"]=$arResult["SECTION"]["LEFT_MARGIN"]+1;
$arFilter["RIGHT_MARGIN"]=$arResult["SECTION"]["RIGHT_MARGIN"];
$arFilter["<="."DEPTH_LEVEL"]=$arResult["SECTION"]["DEPTH_LEVEL"] + $arParams["TOP_DEPTH"];
$arResult["SECTION"]["PATH"] = array();
$rsPath = CIBlockSection::GetNavChain($arResult["SECTION"]["IBLOCK_ID"], $arResult["SECTION"]["ID"]);
$rsPath->SetUrlTemplates("", $arParams["SECTION_URL"]);
while($arPath = $rsPath->GetNext())
{
$arResult["SECTION"]["PATH"][]=$arPath;
}
}
else
{
$arResult["SECTION"] = array("ID"=>0, "DEPTH_LEVEL"=>0);
$arFilter["<="."DEPTH_LEVEL"] = $arParams["TOP_DEPTH"];
}
$arFilter["CNT_ACTIVE"]="Y";
//ORDER BY
$arSort = array(
"left_margin"=>"asc",
);
//EXECUTE
$rsSections = CIBlockSection::GetList($arSort, $arFilter, $arParams["COUNT_ELEMENTS"], $arSelect);
$rsSections->SetUrlTemplates("", $arParams["SECTION_URL"]);
while($arSection = $rsSections->GetNext())
{
if(isset($arSection["PICTURE"]))
$arSection["PICTURE"] = CFile::GetFileArray($arSection["PICTURE"]);
$arButtons = CIBlock::GetPanelButtons(
$arSection["IBLOCK_ID"],
0,
$arSection["ID"],
array("SESSID"=>false)
);
$arSection["EDIT_LINK"] = $arButtons["edit"]["edit_section"]["ACTION_URL"];
$arSection["DELETE_LINK"] = $arButtons["edit"]["delete_section"]["ACTION_URL"];
$arResult["SECTIONS"][]=$arSection;
}
$arResult["SECTIONS_COUNT"] = count($arResult["SECTIONS"]);
$this->SetResultCacheKeys(array(
"SECTIONS_COUNT",
"SECTION",
));
//echo '<pre>'; print_r($arResult); echo '</pre>';
$this->IncludeComponentTemplate();
}
if($arResult["SECTIONS_COUNT"] > 0 || isset($arResult["SECTION"]))
{
if(
$USER->IsAuthorized()
&& $APPLICATION->GetShowIncludeAreas()
&& CModule::IncludeModule("iblock")
)
{
$UrlDeleteSectionButton = "";
if(isset($arResult["SECTION"]) && $arResult["SECTION"]['IBLOCK_SECTION_ID'] > 0)
{
$rsSection = CIBlockSection::GetList(
array(),
array("=ID" => $arResult["SECTION"]['IBLOCK_SECTION_ID']),
false,
array("SECTION_PAGE_URL")
);
$rsSection->SetUrlTemplates("", $arParams["SECTION_URL"]);
$arSection = $rsSection->GetNext();
$UrlDeleteSectionButton = $arSection["SECTION_PAGE_URL"];
}
if(empty($UrlDeleteSectionButton))
{
$url_template = CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "LIST_PAGE_URL");
$arIBlock = CIBlock::GetArrayByID($arParams["IBLOCK_ID"]);
$arIBlock["IBLOCK_CODE"] = $arIBlock["CODE"];
$UrlDeleteSectionButton = CIBlock::ReplaceDetailURL($url_template, $arIBlock, true, false);
}
$arReturnUrl = array(
"add_section" => (
strlen($arParams["SECTION_URL"])?
$arParams["SECTION_URL"]:
CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "SECTION_PAGE_URL")
),
"add_element" => (
strlen($arParams["SECTION_URL"])?
$arParams["SECTION_URL"]:
CIBlock::GetArrayByID($arParams["IBLOCK_ID"], "SECTION_PAGE_URL")
),
"delete_section" => $UrlDeleteSectionButton,
);
$arButtons = CIBlock::GetPanelButtons(
$arParams["IBLOCK_ID"],
0,
$arResult["SECTION"]["ID"],
array("RETURN_URL" => $arReturnUrl)
);
$this->AddIncludeAreaIcons(CIBlock::GetComponentMenu($APPLICATION->GetPublicShowMode(), $arButtons));
}
if($arParams["ADD_SECTIONS_CHAIN"] && isset($arResult["SECTION"]) && is_array($arResult["SECTION"]["PATH"]))
{
foreach($arResult["SECTION"]["PATH"] as $arPath)
{
$APPLICATION->AddChainItem($arPath["NAME"], $arPath["~SECTION_PAGE_URL"]);
}
}
}
?>
_____________________
это .parametrs.php
____________________________
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
if(!CModule::IncludeModule("iblock"))
return;
$arIBlockType = CIBlockParameters::GetIBlockTypes();
$rsIBlock = CIBlock::GetList(Array("sort" => "asc"), Array("TYPE" => $arCurrentValues["IBLOCK_TYPE"], "ACTIVE"=>"Y"));
while($arr=$rsIBlock->Fetch())
$arIBlock[$arr["ID"]] = "[".$arr["ID"]."] ".$arr["NAME"];
$arProperty_UF = array();
$arUserFields = $GLOBALS["USER_FIELD_MANAGER"]->GetUserFields("IBLOCK_".$arCurrentValues["IBLOCK_ID"]."_SECTION");
foreach($arUserFields as $FIELD_NAME=>$arUserField)
$arProperty_UF[$FIELD_NAME] = $arUserField["LIST_COLUMN_LABEL"]? $arUserField["LIST_COLUMN_LABEL"]: $FIELD_NAME;
$arComponentParameters = array(
"GROUPS" => array(
),
"PARAMETERS" => array(
"IBLOCK_TYPE" => array(
"PARENT" => "BASE",
"NAME" => GetMessage("CP_BCSL_IBLOCK_TYPE"),
"TYPE" => "LIST",
"VALUES" => $arIBlockType,
"REFRESH" => "Y",
),
"IBLOCK_ID" => array(
"PARENT" => "BASE",
"NAME" => GetMessage("CP_BCSL_IBLOCK_ID"),
"TYPE" => "LIST",
"ADDITIONAL_VALUES" => "Y",
"VALUES" => $arIBlock,
"REFRESH" => "Y",
),
"SECTION_ID" => array(
"PARENT" => "BASE",
"NAME" => GetMessage("CP_BCSL_SECTION_ID"),
"TYPE" => "STRING",
"DEFAULT" => '={$_REQUEST["SECTION_ID"]}',
),
"SECTION2_ID" => array(
"PARENT" => "BASE",
"NAME" => GetMessage("CP_BCSL_SECTION2_ID"),
"TYPE" => "STRING",
"DEFAULT" => '={$_REQUEST["SECTION2_ID"]}',
),
"SECTION_CODE" => array(
"PARENT" => "BASE",
"NAME" => GetMessage("CP_BCSL_SECTION_CODE"),
"TYPE" => "STRING",
"DEFAULT" => '',
),
"SECTION_URL" => CIBlockParameters::GetPathTemplateParam(
"SECTION",
"SECTION_URL",
GetMessage("CP_BCSL_SECTION_URL"),
"",
"URL_TEMPLATES"
),
"COUNT_ELEMENTS" => array(
"PARENT" => "DATA_SOURCE",
"NAME" => GetMessage("CP_BCSL_COUNT_ELEMENTS"),
"TYPE" => "CHECKBOX",
"DEFAULT" => 'Y',
),
"TOP_DEPTH" => array(
"PARENT" => "DATA_SOURCE",
"NAME" => GetMessage("CP_BCSL_TOP_DEPTH"),
"TYPE" => "STRING",
"DEFAULT" => '2',
),
"SECTION_FIELDS" => CIBlockParameters::GetSectionFieldCode(
GetMessage("CP_BCSL_SECTION_FIELDS"),
"DATA_SOURCE",
array()
),
"SECTION_USER_FIELDS" =>array(
"PARENT" => "DATA_SOURCE",
"NAME" => GetMessage("CP_BCSL_SECTION_USER_FIELDS"),
"TYPE" => "LIST",
"MULTIPLE" => "Y",
"ADDITIONAL_VALUES" => "Y",
"VALUES" => $arProperty_UF,
),
"ADD_SECTIONS_CHAIN" => Array(
"PARENT" => "ADDITIONAL_SETTINGS",
"NAME" => GetMessage("CP_BCSL_ADD_SECTIONS_CHAIN"),
"TYPE" => "CHECKBOX",
"DEFAULT" => "Y",
),
"CACHE_TIME" => Array("DEFAULT"=>36000000),
"CACHE_GROUPS" => array(
"PARENT" => "CACHE_SETTINGS",
"NAME" => GetMessage("CP_BCSL_CACHE_GROUPS"),
"TYPE" => "CHECKBOX",
"DEFAULT" => "Y",
),
),
);
?>
______________________________
а это вызов компонента и его свойства
_________________________________
<?$APPLICATION->IncludeComponent(
"new1:catalog.section.list",
".default",
Array(
"IBLOCK_TYPE" => "1c_catalog",
"IBLOCK_ID" => "49",
"SECTION_ID" => $_REQUEST["SECTION2_ID"],
"SECTION2_ID" => "",
"SECTION_CODE" => "",
"SECTION_URL" => "/mag/index.php?SECTION3_ID=#SECTION_ID#&SECTION2_ID=#ID#",
"COUNT_ELEMENTS" => "Y",
"TOP_DEPTH" => "2",
"SECTION_FIELDS" => array(),
"SECTION_USER_FIELDS" => array(),
"ADD_SECTIONS_CHAIN" => "Y",
"CACHE_TYPE" => "A",
"CACHE_TIME" => "36000000",
"CACHE_GROUPS" => "Y"
)
);?>
__________________________________