Если прямо в поиске, то допиливать подключени/шаблон bitrix:search.page
init.php
вот мой кусок для добавления произвольных данных к элементам поиска в индекс
можете изменить для id
[CODE]// для поиска
AddEventHandler("search", "BeforeIndex", Array("tm", "BeforeIndexHandler"));
// элемент инфоблока 13 (не раздел)
if($arFields["MODULE_ID"] == "iblock" && $arFields["PARAM2"] == 13 && substr($arFields["ITEM_ID"], 0, 1) != "S")
{
/*
* Индексация возможных разделов
*/
$arFields["PARAMS"]["iblock_section"] = array();
//Получаем разделы привязки элемента (их может быть несколько), включая родительские
$sections = tm::GetSectionList($arFields["PARAM2"], $arFields["ITEM_ID"]);
foreach ($sections as $sec)
{
$arFields["PARAMS"]["iblock_section"][] = $sec;
}
/*
* Индексация свойств
*/
$dbr = CIBlockElement::GetProperty($arFields["PARAM2"], $arFields["ITEM_ID"], Array(), Array('PROPERTY_TYPE' => 'L'));
while($arProperty = $dbr->Fetch())
{
$arFields["PARAMS"]["prop_".$arProperty['ID']][] = $arProperty['VALUE_ENUM'];
}
}[/CODE]потом при подключении компонента поиска можно фильтровать по добавленным значениям
а вот так у меня происходит фильтр
[CODE]<?
global $arrSearchFilter;
$arrSearchFilter = array();
$arrSearchFilter = array('PARAMS' => array('iblock_section' => array('535','534'), 'prop_162' => '89' ) );
//$arrSearchFilter = array('PARAMS' => array('prop_211' => 'краны' ) );
?>
<?$APPLICATION->IncludeComponent(
"bitrix:search.page",
"ms",
Array(
"RESTART" => "N",
"NO_WORD_LOGIC" => "N",
"CHECK_DATES" => "N",
"USE_TITLE_RANK" => "N",
"DEFAULT_SORT" => "rank",
"FILTER_NAME" => "arrSearchFilter",
"arrFILTER" => array(0=>"iblock_catalog",),
"arrFILTER_iblock_catalog" => array(0=>"13",),
// ..............to be continued ))
[/CODE]Ну если это не устраивает, можете catalog.smart.filter использовать,
А если и это не подойдет, то почему бы и не написать поиск на api ? Что было бы гораздо правильнее в вашем случае (если это отдельный элемент сайта)
[CODE]$r = CIBlockElement::GetList(array(), array('ID'=>$product_id), false, false, array()) ;
$a = $r->GetNext();
[/CODE]