В базовой версии есть возможность выбора типа инфоблоков для поиска, но нет возможности указать конкретный.
В компонент, а лучше его копию в своем пространстве имен, вносим
Файл result_modifier.php нужного шаблона:
$ElemIDS=array(); $IBLOCKIDS=array(); foreach ($arResult["SEARCH"] as $key=>$value){ array_push($ElemIDS,$value["ITEM_ID"]); } $arSelect = Array("IBLOCK_ID"); $arFilter = Array("ID"=>$ElemIDS); $res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect); while ($ob = $res->GetNextElement()) { $arFields = $ob->GetFields(); array_push($IBLOCKIDS,$arFields["IBLOCK_ID"]); } $IBLOCKIDS=array_unique($IBLOCKIDS); foreach ($IBLOCKIDS as $key=>$value){ $res = CIBlock::GetList( Array(), Array( 'TYPE'=>'1c_catalog', 'SITE_ID'=>SITE_ID, 'ACTIVE'=>'Y', "ID"=>$value ), true ); $ar_res = $res->Fetch(); $arResult["IBLOCKS"][$value]=$ar_res['NAME']; }
В файл самого шаблона template.php:
<?if($arParams["SHOW_WHERE"]):?> <select class="form-control col-sm-12" name="IBLOCK" onchange="submit();"> <option value="0">Без ограничения</option> <?foreach ($arResult["IBLOCKS"]as $key=>$value):?> <option value="<?=$key?>" <?if ($_REQUEST["IBLOCK"]==$key)echo "selected"?>>Показать результат из раздела "<?=$value?>"</option> <?endforeach?> </select> <?endif;?>
В файл самого компонента:
перед
$exFILTER = CSearchParameters::ConvertParamsToFilter($arParams, "arrFILTER");
строку
if ($_REQUEST["IBLOCK"])$arParams["arrFILTER_iblock_1c_catalog"]=$_REQUEST["IBLOCK"];
Наслаждаемся.