Приветствую. Есть такая проблема в битриксе - есть поиск по заголовкам search.title. Нужно, чтобы он не индексировал товары, торговых предложений которых нет на складах. Написал код на тестовой странице, вбиваю ID товара вручную - все показывает верно, есть ли наличие ТП и все вроде хорошо. Ну а затем в init.php вызываю событие перед индексацией и тем же образом пытаюсь исключить ненужные товары, но все равно они как-то проходят. В чем может быть проблема?
Код |
---|
AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler");
function BeforeIndexHandler($arFields)
{
CModule::IncludeModule('iblock');
CModule::IncludeModule('catalog');
$TovarExist = false;
$TypeProduct = CCatalogSKU::getOffersList($arFields['ITEM_ID']);
if($TypeProduct != false){
foreach($TypeProduct as $key => $ProdSku){
foreach($ProdSku as $key => $SkuID){
for ($i = 2; $i < 12; $i++) {
if ($i !== 8 && $i !== 9) { // неактивные склады
$rsStore = CCatalogStoreProduct::GetList(array(), array('PRODUCT_ID' =>$SkuID['ID'], 'STORE_ID' => $i), false, false, array());
$arStore = $rsStore->Fetch();
if($arStore['AMOUNT'] > 0){
$TovarExist = true;
}
}
}
}
}
}
if($TovarExist === false){
$arFields["BODY"] = $arFields["TITLE"] = '';
unset($arFields["BODY"]); //на всякий случай
unset($arFields["TITLE"]);
} |