Мне повезет, или улучшение поиска Битрикс

Углубленное изучение Битрикс
  • Мне повезет, или улучшение поиска Битрикс

    Антон Долганин 12 Июля 2014 16:46 1543
    Часто бывает, что посетитель четко уверен, что первый найденный элемент его устроит. Или менеджер магазина — уж точно знает, что по данному названию вываливается первый релевантный товар. Так почему бы сразу не перейти на данный элемент?

    Давайте попробуем это реализовать, но конечно же оставить возможность обычного поиска. Я решил, что при обычном нажатии 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']);
        }
    }


    Готово!