
Часто при создании сайта интернет-магазина автозапчастей или других товаров, требуется сделать поиск по какому либо свойству инфоблока. Вот собственно небольшой код который после переиндексации элементов инфоблока (товаров) позволяет искать по свойству инфоблока.
// регистрируем обработчик в /bitrix/php_interface/init.php
AddEventHandler("search", "BeforeIndex", "BeforeIndexHandler");
// создаем обработчик события "BeforeIndex"
function BeforeIndexHandler($arFields)
{
if(!CModule::IncludeModule("iblock")) // подключаем модуль
return $arFields;
if($arFields["MODULE_ID"] == "iblock")
{
$db_props = CIBlockElement::GetProperty( // Запросим свойства индексируемого элемента
$arFields["PARAM2"], // IBLOCK_ID индексируемого свойства
$arFields["ITEM_ID"], // ID индексируемого свойства
array("sort" => "asc"), // Сортировка (можно упустить)
Array("CODE"=>"ВАШЕ СВОЙСТВО")); // CODE свойства, по которому нужно осуществлять поиск
if($ar_props = $db_props->Fetch())
$arFields["TITLE"] .= " ".$ar_props["VALUE"]; // Добавим свойство в конец заголовка индексируемого элемента
}
return $arFields; // вернём изменения
}