Your IP : 18.219.123.56
<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$_REQUEST["action"] = "ADD2BASKET"; // чтобы в ссылках везде не менять. Это нужно в crm_provider.php
CModule::IncludeModule("iblock");
CModule::IncludeModule("catalog");
$id = (int) (!empty($_REQUEST['id'])?$_REQUEST['id']:$_REQUEST['ID']);
//$rewriteFields['PRODUCT_PROVIDER_CLASS'] = "CRMCatalogProductProvider";
/*генерация названия комплекта*/
$milliseconds = round(microtime(true) * 1000);
if(isset($id) && isset($_REQUEST['quantity'])){
$quantity = intval($_REQUEST['quantity']);
/* Add2BasketByProductID( $id, $quantity, $rewriteFields, array("NAME" => "Цвет", "CODE" => "STYLE", "VALUE" => "красный", "SORT"=> 100 ) );
Add2BasketByProductID( 38497, $quantity, $rewriteFields, array("NAME" => "Цвет", "CODE" => "STYLE", "VALUE" => "красный1", "SORT"=> 100)); /*Добавляем инвертер*/
/* Add2BasketByProductID( 41103, $quantity, $rewriteFields, array("NAME" => "Цвет", "CODE" => "STYLE", "VALUE" => "красный2", "SORT"=> 100) );*/ /*Добавляем wi-fi*/
/*Добавляем товар*/
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "CATALOG_GROUP_1");
$arFilter = Array("ID"=> $id, "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
while($ob = $res->GetNextElement())
{
$arFields = $ob->GetFields();
$arFields = array(
"PRODUCT_ID" => $id,
"PRICE" => $arFields['CATALOG_PRICE_1'],
"CURRENCY" => "RUB",
"QUANTITY" => $quantity,
"LID" => LANG,
"DELAY" => "N",
"CAN_BUY" => "Y",
"NAME" => $arFields['NAME'],
);
$arProps = array();
$arProps[] = array(
"NAME" => "Комплект",
"CODE" => "COMP",
"VALUE" => $milliseconds
);
$arFields["PROPS"] = $arProps;
CSaleBasket::Add($arFields);
}
/*Добавляем инвертер*/
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "CATALOG_GROUP_1");
$arFilter = Array("ID"=> 38497, "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
while($ob = $res->GetNextElement())
{
$arFields = $ob->GetFields();
$arFields = array(
"PRODUCT_ID" => 38497,
"PRICE" => $arFields['CATALOG_PRICE_1'],
"CURRENCY" => "RUB",
"QUANTITY" => $quantity,
"LID" => LANG,
"DELAY" => "N",
"CAN_BUY" => "Y",
"NAME" => $arFields['NAME'],
);
$arProps = array();
$arProps[] = array(
"NAME" => "Комплект",
"CODE" => "COMP",
"VALUE" => $milliseconds
);
$arFields["PROPS"] = $arProps;
CSaleBasket::Add($arFields);
}
/*Добавляем wi-fi*/
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "CATALOG_GROUP_1");
$arFilter = Array("ID"=> 41103, "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
while($ob = $res->GetNextElement()) {
$arFields = $ob->GetFields();
$arFields = array(
"PRODUCT_ID" => 41103,
"PRICE" => $arFields['CATALOG_PRICE_1'],
"CURRENCY" => "RUB",
"QUANTITY" => $quantity,
"LID" => LANG,
"DELAY" => "N",
"CAN_BUY" => "Y",
"NAME" => $arFields['NAME'],
);
$arProps = array();
$arProps[] = array(
"NAME" => "Комплект",
"CODE" => "COMP",
"VALUE" => $milliseconds
);
$arFields["PROPS"] = $arProps;
CSaleBasket::Add($arFields);
}
}else{
/*Добавляем товар*/
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "CATALOG_GROUP_1");
$arFilter = Array("ID"=> $id, "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
while($ob = $res->GetNextElement())
{
$arFields = $ob->GetFields();
$arFields = array(
"PRODUCT_ID" => $id,
"PRICE" => $arFields['CATALOG_PRICE_1'],
"CURRENCY" => "RUB",
"QUANTITY" => 1,
"LID" => LANG,
"DELAY" => "N",
"CAN_BUY" => "Y",
"NAME" => $arFields['NAME'],
);
$arProps = array();
$arProps[] = array(
"NAME" => "Комплект",
"CODE" => "COMP",
"VALUE" => $milliseconds
);
$arFields["PROPS"] = $arProps;
CSaleBasket::Add($arFields);
}
/*Добавляем инвертер*/
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "CATALOG_GROUP_1");
$arFilter = Array("ID"=> 38497, "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
while($ob = $res->GetNextElement()) {
$arFields = $ob->GetFields();
$arFields = array(
"PRODUCT_ID" => 38497,
"PRICE" => $arFields['CATALOG_PRICE_1'],
"CURRENCY" => "RUB",
"QUANTITY" => 1,
"LID" => LANG,
"DELAY" => "N",
"CAN_BUY" => "Y",
"NAME" => $arFields['NAME'],
);
$arProps = array();
$arProps[] = array(
"NAME" => "Комплект",
"CODE" => "COMP",
"VALUE" => $milliseconds
);
$arFields["PROPS"] = $arProps;
CSaleBasket::Add($arFields);
}
/*Добавляем wi-fi*/
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "CATALOG_GROUP_1");
$arFilter = Array("ID"=> 41103, "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
while($ob = $res->GetNextElement()) {
$arFields = $ob->GetFields();
$arFields = array(
"PRODUCT_ID" => 41103,
"PRICE" => $arFields['CATALOG_PRICE_1'],
"CURRENCY" => "RUB",
"QUANTITY" => 1,
"LID" => LANG,
"DELAY" => "N",
"CAN_BUY" => "Y",
"NAME" => $arFields['NAME'],
);
$arProps = array();
$arProps[] = array(
"NAME" => "Комплект",
"CODE" => "COMP",
"VALUE" => $milliseconds
);
$arFields["PROPS"] = $arProps;
CSaleBasket::Add($arFields);
}
/* Add2BasketByProductID(
$id,
1,
$rewriteFields,
array("NAME" => "Цвет", "CODE" => "CLR", "VALUE" => "красный")
);
Add2BasketByProductID( 38497, 1, $rewriteFields, array("NAME" => "Цвет", "CODE" => "STYLE", "VALUE" => "красный", "SORT"=> 100) ); /*Добавляем инвертер*/
/* Add2BasketByProductID( 41103, 1, $rewriteFields, array("NAME" => "Цвет", "CODE" => "STYLE", "VALUE" => "красный", "SORT"=> 100) );*/ /*Добавляем wi-fi*/
}
// Alex: ищем комплекты #129095
$filterSet = [
array(
"LOGIC" => "OR",
"PROPERTY_PRODUCTS_1" => $id,
"PROPERTY_PRODUCTS_2" => $id,
"PROPERTY_PRODUCTS_3" => $id,
"PROPERTY_PRODUCTS_4" => $id,
),
];
$arSet = CIBlockElement::GetList([],$filterSet,false,false,["ID","NAME","PROPERTY_PRODUCTS_1","PROPERTY_PRODUCTS_2","PROPERTY_PRODUCTS_3","PROPERTY_PRODUCTS_4","TEXT_MAIN", "TEXT_NO_MAIN", "TEXT_BASKET"])->Fetch();
// END: ищем комплекты
$arRelatedProdIds = [];
$resElem = CIBlockElement::GetList([],["ID"=>$id],false,false,["ID","IBLOCK_ID","NAME","PROPERTY_RELATE", "IBLOCK_SECTION_ID","CATALOG_PRICE_1", "CATALOG_GROUP_1", "DETAIL_PICTURE", "PREVIEW_PICTURE", "CODE", "PROPERTY_PICTURE1_HOME_NEW", "DETAIL_PAGE_URL", "PROPERTY_RELATED_PRODUCTS"]);
while($obElem = $resElem->GetNext())
{
if(!empty($obElem["PROPERTY_PICTURE1_HOME_NEW_VALUE"]))
$obElem["PICTURE"] = CFile::ResizeImageGet($obElem["PROPERTY_PICTURE1_HOME_NEW_VALUE"], ["width"=>150,"height"=>150])["src"];
$element = $obElem;
if(!empty($obElem["PROPERTY_RELATED_PRODUCTS_VALUE"]))
$arRelatedProdIds[] = $obElem["PROPERTY_RELATED_PRODUCTS_VALUE"];
}
// получение инфомации
if(!empty($arSet)) // Комплекты
{
$allIdsSet = array_merge($arSet["PROPERTY_PRODUCTS_1_VALUE"],$arSet["PROPERTY_PRODUCTS_2_VALUE"],$arSet["PROPERTY_PRODUCTS_3_VALUE"],$arSet["PROPERTY_PRODUCTS_4_VALUE"]);
$arSetProducts = [];
$cache = new CPHPCache();
if($cache->InitCache(30,"relate_prod_".$id, "/"))
{
$arSetProducts = $cache->GetVars();
}
elseif($cache->StartDataCache())
{
$resSet = CIBlockElement::GetList([],["ID"=>$allIdsSet, "ACTIVE"=>"Y"],false,false,["ID","IBLOCK_ID","NAME","IBLOCK_SECTION_ID", "DETAIL_PICTURE", "PREVIEW_PICTURE","CATALOG_PRICE_1", "CATALOG_GROUP_1", "CODE", "DETAIL_PAGE_URL", "PROPERTY_PICTURE1_HOME_NEW"]);
while($obSet = $resSet->GetNext())
{
if(!empty($obSet["PROPERTY_PICTURE1_HOME_NEW_VALUE"]))
$obSet["PICTURE"] = CFile::ResizeImageGet($obSet["PROPERTY_PICTURE1_HOME_NEW_VALUE"],["width"=>140,"height"=>140])['src'];
$arSetProducts[$obSet["ID"]] = $obSet;
}
$cache->EndDataCache($arSetProducts);
}
if(!empty($arSetProducts))
{
// для каждой группы выберем по одному товару
$arSetGroup = [1=>[],2=>[],3=>[],4=>[],5=>[]];
// уберем группу нашего текущего товара
foreach ($arSetGroup as $n => $arGSet)
{
if(in_array($id, $arSet["PROPERTY_PRODUCTS_" . $n . "_VALUE"]))
{
unset($arSetGroup[$n]);
}
}
// смотрим по каждой обязательные товары
foreach ($arSetGroup as $n => $arGSet)
{
if(empty($arSet["PROPERTY_PRODUCTS_" . $n . "_VALUE"]))
continue;
$keysReqProds = array_keys($arSet["PROPERTY_PRODUCTS_" . $n . "_DESCRIPTION"], "on"); // все осн.товары в группе
if(!empty($keysReqProds))
{
foreach ($keysReqProds as $key)
{
$idProd = $arSet["PROPERTY_PRODUCTS_" . $n . "_VALUE"][$key]; // IDшник основного товара
if(!empty($arSetProducts[$idProd]))
{
$arSetGroup[$n] = $arSetProducts[$idProd];
break;
}
}
}
}
// теперь смотрим где нет товаров и добавляем необязательными
foreach ($arSetGroup as $n => $arGSet)
{
// смотрим чтобы блок был и в группе уже не было товаров
if(empty($arSet["PROPERTY_PRODUCTS_" . $n . "_VALUE"]) || !empty($arGSet))
continue;
foreach ($arSet["PROPERTY_PRODUCTS_" . $n . "_VALUE"] as $idProd)
{
if(!empty($arSetProducts[$idProd]))
{
$arSetGroup[$n] = $arSetProducts[$idProd];
break;
}
}
}
}
}
elseif(count($arRelatedProdIds) > 0) // сопутка
{
$arRelate = [];
$cache = new CPHPCache();
if($cache->InitCache(36000,"relate_prod_".$id, "/"))
{
$arRelate = $cache->GetVars();
}
elseif($cache->StartDataCache())
{
$resRelate = CIBlockElement::GetList([],["ID"=>$arRelatedProdIds],false,Array("nPageSize"=>4),["ID","IBLOCK_ID","NAME","IBLOCK_SECTION_ID", "DETAIL_PICTURE", "PREVIEW_PICTURE", "CATALOG_PRICE_1", "CATALOG_GROUP_1", "CODE", "DETAIL_PAGE_URL", "PROPERTY_PICTURE1_HOME_NEW"]);
while($obRelate = $resRelate->GetNext())
{
if(!empty($obRelate["PROPERTY_PICTURE1_HOME_NEW_VALUE"]))
$obRelate["PICTURE"] = CFile::ResizeImageGet($obRelate["PROPERTY_PICTURE1_HOME_NEW_VALUE"],["width"=>140,"height"=>140])['src'];
$arRelate[] = $obRelate;
}
$cache->EndDataCache($arRelate);
}
}
// вывод
// основной блок
$html = '
<div class="cart-modal bem">
<div class="cart-modal__holder">
<div class="cart-modal__head">
<div class="cart-modal__head-content">
<div class="cart-modal__head-title">
<span class="cart-modal__heading">Товар успешно добавлен в корзину</span>
</div>
<br>
<br>
</div>
<div class="cart-modal__buttons">
<a href="#" class="multiple-popup__button btn_hollow cart-modal__shopping-link">Продолжить покупки</a>
<a href="/cart/order/" class="multiple-popup__button btn btn_blue">Перейти в корзину</a>
</div>
</div>
';
echo $html;