В компоненте "catalog.element" рядом с описанием товара расположена ссылка вида ".. ./?action=ADD_TO_COMPARE_LIST&id=141", при нажатии на которую добавления товара к списку сравниваемых не происходит. Скопировал в код компонента "catalog" обработку ссылки добавления к сравнению из компонента "catalog.compare.result", но в переменная $arElement оказывается пустой, и, соответственно, массив с элементами списка в сессии - тоже. Как будто неправильно сделана выборка из базы. Или добавление товара в список сравниваемых делается не так?
Код |
---|
if(isset($_REQUEST["id"]))
{
$id = intval($_REQUEST["id"]);
}
else
$id = 0;
$arParams["NAME"] = 'CATALOG_COMPARE_LIST';
/*************************************************************************
Handling the Compare button
*************************************************************************/
if($_REQUEST["action"] == "ADD_TO_COMPARE_LIST" && $id > 0)
{
if(!array_key_exists($id, $_SESSION[$arParams["NAME"]][$arParams["IBLOCK_ID"]]["ITEMS"]))
{
//SELECT
$arSelect = array(
"ID",
"IBLOCK_ID",
"IBLOCK_SECTION_ID",
"NAME",
"DETAIL_PAGE_URL",
);
//WHERE
$arFilter = array(
"ID" => $id,
"IBLOCK_LID" => SITE_ID,
"IBLOCK_ACTIVE" => "Y",
"ACTIVE_DATE" => "Y",
"ACTIVE" => "Y",
"CHECK_PERMISSIONS" => "N",
);
$arOffers = CIBlockPriceTools::GetOffersIBlock($arParams["IBLOCK_ID"]);
if($arOffers)
$arFilter["IBLOCK_ID"] = array($arParams["IBLOCK_ID"], $arOffers["OFFERS_IBLOCK_ID"]);
else
$arFilter["IBLOCK_ID"] = $arParams["IBLOCK_ID"];
$rsElement = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
$rsElement->SetUrlTemplates($arParams["DETAIL_URL"]);
$arElement = $rsElement->GetNext();
$arMaster = false;
if($arElement && $arElement["IBLOCK_ID"] == $OFFERS_IBLOCK_ID)
{
$rsMasterProperty = CIBlockElement::GetProperty($arElement["IBLOCK_ID"], $arElement["ID"], array(), array("ID" => $arOffers["OFFERS_PROPERTY_ID"], "EMPTY" => "N"));
if($arMasterProperty = $rsMasterProperty->Fetch())
{
$rsMaster = CIBlockElement::GetList(
array()
,array(
"ID" => $arMasterProperty["VALUE"],
"IBLOCK_ID" => $arMasterProperty["LINK_IBLOCK_ID"],
"ACTIVE" => "Y",
)
,false, false, $arSelect);
$rsMaster->SetUrlTemplates($arParams["DETAIL_URL"]);
$arMaster = $rsMaster->GetNext();
}
}
if($arMaster)
{
$arMaster["NAME"] = $arElement["NAME"];
$_SESSION[$arParams["NAME"]][$arParams["IBLOCK_ID"]]["ITEMS"][$id] = $arMaster;
}
elseif($arElement)
{
$_SESSION[$arParams["NAME"]][$arParams["IBLOCK_ID"]]["ITEMS"][$id] = $arElement;
}
}
}
|