Часто возникают вопросы: "Как исключить из поиска товары определенной группы?" или "Как исключить из поиска товары не в наличии?"
	
	
 
	
	
	
 
	
	
		 Данное событие позволяет максимально гибко настроить отключение из поиска элементов по любым признакам - по доступному количеству, по определенному свойству, по разделу и его полю и т.п.
	
 
 
 
	Пример обработчика, который можно доработать под свою задачу:
	
<?
AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler", 10);
function BeforeIndexHandler($arFields)
{
	$clearIndex = 0;
	
	if($arFields["MODULE_ID"] == 'iblock' && $arFields["TITLE"] != '' && IntVal($arFields["ITEM_ID"]))
	{
		if(CModule::IncludeModule("iblock")){
			$res = CIBlockElement::GetList(Array(), array("ID"=>$arFields["ITEM_ID"]), false, Array("nPageSize"=>1), array("ID", "NAME", "IBLOCK_SECTION_ID"));
			while($fields = $res->Fetch())
			{
				if($fields["IBLOCK_SECTION_ID"]){
					$nav = CIBlockSection::GetNavChain(false, $fields["IBLOCK_SECTION_ID"], array("ID", "NAME", "ACTIVE"));
					while($flds = $nav->Fetch()){
						if($flds["ACTIVE"] == 'N'){
							$clearIndex = 1;
						}
					}
				}
			}
		}
	}
	
	if($clearIndex)
	{
		$arFields["TITLE"] = '';
		$arFields["BODY"] = '';
		$arFields["TAGS"] = '';
	}
	
	return $arFields;
}
?>
 
* Обработчик из примера проверяет поле активности у разделов, в которые вложен товар, и исключает его из поиска, если один из разделов неактивен.
 
 
		
    
        Эта информация оказалась полезной?
        
            Да
            Нет