Помогите решить задачу.
Есть страница каталога на ней компонент поиска товаров.
Товары находит (ищет по имени и описанию), но выдаёт в том порядке в котором хочет битрикс.
Нужно изменить порядок этой выдачи, так чтобы первыми выдавались те элементы, у которых строка поиска содержится в названии. А уж потом все остальные.
Пробовал изменить в самом компоненте формирование возвращаемого массива. Например так:
...............
//$arReturn[$ar["ID"]] = $ar["ITEM_ID"];
..............
$index = (strpos(strtolower($ar['TITLE' ] ) , strtolower($q)) !== false) ? 'prima' : 'secunda';
$result[$index][$ar["ID"]] = $ar["ITEM_ID"];
$arResult["SEARCH"][]=$ar;
$ar = $obSearch->GetNext();
}
$arReturn = array_merge($result['prima'], $result['secunda' ] ) ;
............
в момент формирования $arReturn меняется, но в шаблоне элементы в каком порядке выводились, в таком и выводятся.
Есть страница каталога на ней компонент поиска товаров.
Товары находит (ищет по имени и описанию), но выдаёт в том порядке в котором хочет битрикс.
Нужно изменить порядок этой выдачи, так чтобы первыми выдавались те элементы, у которых строка поиска содержится в названии. А уж потом все остальные.
Пробовал изменить в самом компоненте формирование возвращаемого массива. Например так:
...............
//$arReturn[$ar["ID"]] = $ar["ITEM_ID"];
..............
$index = (strpos(strtolower($ar['TITLE' ] ) , strtolower($q)) !== false) ? 'prima' : 'secunda';
$result[$index][$ar["ID"]] = $ar["ITEM_ID"];
$arResult["SEARCH"][]=$ar;
$ar = $obSearch->GetNext();
}
$arReturn = array_merge($result['prima'], $result['secunda' ] ) ;
............
в момент формирования $arReturn меняется, но в шаблоне элементы в каком порядке выводились, в таком и выводятся.