Часто бывает, что посетитель четко уверен, что первый найденный элемент его устроит. Или менеджер магазина — уж точно знает, что по данному названию вываливается первый релевантный товар. Так почему бы сразу не перейти на данный элемент?
Давайте попробуем это реализовать, но конечно же оставить возможность обычного поиска. Я решил, что при обычном нажатии Enter будет происходить обычный поиск, а при нажатии «ctrl+enter» — переход к первому результату.
Во-первых, надо изменить шаблон строки поиска, которая присутствует на каждом сайте. Для этого свой шаблон измените таким образом:
Для строки ввода добавляете id=search-input, и добавляете новое скрытое поле:
<input type="hidden" value="n" id="search-lucky" name="lucky"> |
А также размещаете в удобном для вас месте такой JS код:
$(document).on('ready', function(){
$('#search-input').on('keypress', function(e){
if (e.ctrlKey && e.keyCode == 13 || e.keyCode==10) {
$('#search-lucky').val('y');
$(this).closest('form').submit();
} else {
$('#search-lucky').val('n');
}
});
}); |
Теперь при нажатии «ctrl+enter» в URL подмешивается параметр lucky=y. Осталось изменить шаблон страницы поиска. Копируем его и в его файле result_modifier.php (если нет — создаем) пишем такой код:
if (array_key_exists('lucky', $_REQUEST) && $_REQUEST['lucky']=='y') {
if (count($arResult['SEARCH']) > 0) {
LocalRedirect($arResult['SEARCH'][0]['URL']);
}
} |
Готово!