// у товара смотрим его ТП и берем артикулы, вносим их в поле, чтобы искалось по Артикулу ТП
AddEventHandler("catalog", "OnProductAdd","addIDsFromSKUs");
AddEventHandler("catalog", "OnProductUpdate","addIDsFromSKUs");
function addIDsFromSKUs($id, $arFields)
{
$TARGET_IBLOCK_ID = 2;
$artnumbers = "";
if (CModule::IncludeModule('catalog') && CModule::IncludeModule('iblock')) {
$arProductInfo = CCatalogSKU::GetProductInfo($id);
if (is_array($arProductInfo) && $arProductInfo["IBLOCK_ID"]==$TARGET_IBLOCK_ID ) {
$arOffersInfo = CCatalogSKU::GetInfoByProductIBlock($arProductInfo['IBLOCK_ID']);
$arFilter = array(
'IBLOCK_ID' => $arOffersInfo['IBLOCK_ID'],
"PROPERTY_CML2_LINK" => $arProductInfo['ID'],
//"!ID" => $id,
);
$arSelect = Array("PROPERTY_ARTNUMBER");
$obOffersList = CIBlockElement::GetList(array("SORT"=>"ASC"), $arFilter, false, false, $arSelect);
while ($arOffers = $obOffersList->Fetch()) {
$artnumbers .= $arOffers["PROPERTY_ARTNUMBER_VALUE"]. ' ';
}
$PROPERTY_CODE = "SKU_ARTNUMBERS";
$PROPERTY_VALUE = $artnumbers;
$el_id = $arProductInfo['ID'];
$iblock_id = $arProductInfo["IBLOCK_ID"];
$prop[$PROPERTY_CODE] = array('VALUE'=>array('TYPE'=>'TEXT', 'TEXT'=>$PROPERTY_VALUE));
CIBlockElement::SetPropertyValuesEx($el_id, $iblock_id, $prop);
$res = CIBlockElement::GetByID($el_id);
$ar_res = $res->GetNext();
//переиндексируем элемент, чтобы находился в поиске
CSearch::Index(
"iblock",
$el_id,
Array(
"DATE_CHANGE"=>$ar_res["DATE_CHANGE"],
"TITLE"=>$ar_res["NAME"],
"SITE_ID"=>array('s1'),
"PARAM1"=>'catalog',//$arFields["IBLOCK_TYPE_ID"],
"PARAM2"=>'2', //$arFields['IBLOCK_ID'],
"PERMISSIONS"=>array("2"),
"URL"=>str_replace("#ID#", $ar_res["ID"], $ar_res["DETAIL_PAGE_URL"]),
"BODY"=>$ar_res["DETAIL_TEXT"].' '.$artnumbers,
"TAGS"=>$artnumbers,
),
true
);
}
}
}
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "addIDsFromElementSKUs");
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "addIDsFromElementSKUs");
function addIDsFromElementSKUs(&$arFields)
{
if ($arFields['IBLOCK_ID']==2 ) {
$arOffersInfo = CCatalogSKU::GetInfoByProductIBlock($arFields['ID']);
$arFilter = array(
'IBLOCK_ID' => $arOffersInfo['IBLOCK_ID'],
"PROPERTY_CML2_LINK" => $arFields['ID'],
//"!ID" => $id,
);
$arSelect = Array("PROPERTY_ARTNUMBER");
$obOffersList = CIBlockElement::GetList(array("SORT"=>"ASC"), $arFilter, false, false, $arSelect);
while ($arOffers = $obOffersList->Fetch()) {
$artnumbers .= $arOffers["PROPERTY_ARTNUMBER_VALUE"]. ' ';
}
$PROPERTY_CODE = "SKU_ARTNUMBERS";
$PROPERTY_VALUE = $artnumbers;
$el_id = $arFields['ID'];
$iblock_id = $arFields["IBLOCK_ID"];
$prop[$PROPERTY_CODE] = array('VALUE'=>array('TYPE'=>'TEXT', 'TEXT'=>$PROPERTY_VALUE));
CIBlockElement::SetPropertyValuesEx($el_id, $iblock_id, $prop);
//переиндексируем элемент, чтобы находился в поиске
CSearch::Index(
"iblock",
$el_id,
Array(
"DATE_CHANGE"=>$arFields["DATE_CHANGE"],
"TITLE"=>$arFields["NAME"],
"SITE_ID"=>array('s1'),
"PARAM1"=>'catalog',//$arFields["IBLOCK_TYPE_ID"],
"PARAM2"=>'2', //$arFields['IBLOCK_ID'],
"PERMISSIONS"=>array("2"),
"URL"=>str_replace("#ID#", $arFields["ID"], $arFields["URL"]),
"BODY"=>$arFields["DETAIL_TEXT"].' '.$artnumbers,
"TAGS"=>$artnumbers,
),
true
);
}
}
|