<script type="text/javascript">
$(function() {
$('#search_text').autocomplete({
serviceUrl: '/search/', // Страница для обработки запросов автозаполнения
minChars: 2, // Минимальная длина запроса для срабатывания автозаполнения
delimiter: /(,|;)\s*/, // Разделитель для нескольких запросов, символ или регулярное выражение
maxHeight: 300, // Максимальная высота списка подсказок, в пикселях
width: 200, // Ширина списка
zIndex: 9999, // z-index списка
deferRequestBy: 300, // Задержка запроса (мсек)
params: { autocomplete: '1'}, // Дополнительные параметры
onSelect: function(data, value){ } // Callback функция, срабатывающая на выбор одного из предложенных вариантов
});
});
</script>
3. Для <input>, у которого должен выводиться выпадающий список добавляете
id="search_text"
4. В настройки типовой дин. страницы поиска добавляете код:
// Поиск товаров для автозаполнения
if (isset($_REQUEST['autocomplete']))
{
$result_json = array();
// После перехода на UTF-8 следующую строку необходимо будет удалить
$result_json['query'] = $kernel->Utf8ToWindows1251($result_json['query']);
// Список подсказок
$result_json['suggestions'] = array();
$DataBase = & singleton('DataBase');
$shop_items_catalog_name = quote_smart($result_json['query']);
$result = $DataBase->select("SELECT * FROM `shop_items_catalog_table` WHERE `shop_items_catalog_name` LIKE '%{$shop_items_catalog_name}%'");
while ($row = mysql_fetch_assoc($result))
{
$result_json['suggestions'][] = $row['shop_items_catalog_name'];
}
$JsHttpRequest = new JsHttpRequest(SITE_CODING);
echo $JsHttpRequest->php2js($result_json);
exit();
}
Re: Реализация выпадающей подсказки (suggest) со списком товаров для поиска
plasmamedia,
В данном запросе нет ограничения на тип товара, поэтому выбираются все. Если нужно, то можно выбирать только основные товары, это решается небольшим изменением запроса.
Re: Реализация выпадающей подсказки (suggest) со списком товаров для поиска
Подскажите, пожалуйста, как сделать такой автокомплит для своей динамической страницы (не магазин), подтягивая в него названия городов из списка городов магазина?
Re: Реализация выпадающей подсказки (suggest) со списком товаров для поиска
Slovo писал(а):
как можно ограничить список выпадающих подсказок до 10 например
- вместо:
$result = $DataBase->select("SELECT * FROM `shop_items_catalog_table` WHERE `shop_items_catalog_name` LIKE '%{$shop_items_catalog_name}%'");
используйте:
$result = $DataBase->select("SELECT * FROM `shop_items_catalog_table` WHERE `shop_items_catalog_name` LIKE '%{$shop_items_catalog_name}%' LIMIT 0, 10");