Сегодня мы будем интегрировать честно позаимствованную у известной поисковой системы кнопку «Мне повезет!» в шаблон bitrix:search.page. Кнопка позволяет автоматически выполнить переход на первый из результатов поиска — как правило, он наиболее релевантен запросу. Применять можно в интернет-магазинах, например, при поиске по названию товара.

Итак, для начала создадим галочку «Показывать кнопку Мне повезет», которая будет отображаться в настройках компонента. Для этого в файле .parameters.php шаблона компонента дописываем

$arTemplateParameters = array(
    // тут оставляем существующие параметры
    "SHOW_LUCK" => Array(
        "NAME" => GetMessage("SHOW_LUCK"), // текст-заголовок
        "TYPE" => "CHECKBOX", // тип параметра - флажок
        "DEFAULT" => "Y", // по умолчанию отмечен
    ),
);

Текстовая константа SHOW_LUCK должна быть описана в файле /lang/ru/.parameters.php

Результат

Теперь в файле-шаблоне template.php допишем вывод кнопки и обработчик ее нажатия.

Обработчик

if(($arParams["SHOW_LUCK"]=="Y") && $_REQUEST["luck"] && ($arItem = $arResult["SEARCH"][0])) {
    LocalRedirect($arItem["URL"]);
}

Буквально — если отмечена опция «Показывать кнопку» и на кнопку нажали и есть хотя бы один результат поиска, то переходим на эту страницу.

Вывод кнопки

<?if($arParams["SHOW_LUCK"]=="Y"):?>
    <input name="luck" type="submit" value="<?=GetMessage("SEARCH_GO_LUCK")?>" />
<?endif?>

Этот блок нужно разместить внутри формы (обычно рядом с кнопкой «Искать»). Текстовая константа SEARCH_GO_LUCK должна быть определена в файле lang/ru/template.php

На этом все :)

Больше статей и материалов по web-разработке в tg-канале - подписывайтесь!

Подписаться в telegram

3 комментария “Кнопка «Мне повезет!» в поисковой системе 1с-Битрикс

  1. Temy

    Круто. Спасибо за решение.

  2. Гресс Антон

    молодцы! это, конечно, просто сделать, но в знак благодарности я просто скачаю выложенный вами шаблон компонента!

  3. Георгий

    В архиве почемуто битая кирилица место слов ироглифы перезалейте плиз для 1251

Добавить комментарий

Ваш адрес email не будет опубликован.