Реализация выпадающей подсказки (suggest) со списком товаров для поиска

Модератор
#
Реализация выпадающей подсказки (suggest) со списком товаров для поиска
Пример построен на основе плагина jQuery AutoComplete.

1. Загрузите файл jquery.autocomplete.zip и распакуйте в /hostcmsfiles/jquery/
2. В макете кроме подключения jQuery добавляете в блок <head>:
<!-- jQuery AutoComplete -->
<link rel="stylesheet" type="text/css" href="/hostcmsfiles/jquery/styles.css" />
<script type="text/javascript" src="/hostcmsfiles/jquery/jquery.autocomplete.js"></script>

<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();
   
   $kernel = & singleton('kernel');
   
   // Оригинальный запрос
   $result_json['query'] = to_str($_REQUEST['query']);
   
   // После перехода на 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) со списком товаров для поиска
Выбираются ли этим способом модификации товаров? Или только основные товары?
http://superweb.pro/ — сайты на HostCMS под ключ
Модератор
#
Re: Реализация выпадающей подсказки (suggest) со списком товаров для поиска
plasmamedia,
В данном запросе нет ограничения на тип товара, поэтому выбираются все. Если нужно, то можно выбирать только основные товары, это решается небольшим изменением запроса.
#
Re: Реализация выпадающей подсказки (suggest) со списком товаров для поиска
У меня когда вводишь запрос кириллица выводиться какими-то иероглифами-ромбиками.
Skype:ferdinant1988 ICQ:311960596 E-mail: ferdinant@i.ua
#
Re: Реализация выпадающей подсказки (suggest) со списком товаров для поиска
Подскажите, пожалуйста, как сделать такой автокомплит для своей динамической страницы (не магазин), подтягивая в него названия городов из списка городов магазина?
http://superweb.pro/ — сайты на HostCMS под ключ
#
Re: Реализация выпадающей подсказки (suggest) со списком товаров для поиска
чёт у меня ничего не получается

пример можно глянуть?
Модератор
#
Re: Реализация выпадающей подсказки (suggest) со списком товаров для поиска
ferdinant,
Запрос в поддержку с данными доступа.

plasmamedia,
В принципе аналогично, только на серверной части вместо поиска товаров искать города по таблице и выводить.

kvasiliy,
Что именно не получается?
#
Re: Реализация выпадающей подсказки (suggest) со списком товаров для поиска
Здравствуйте!
Скажите, пожалуйста, как можно ограничить список выпадающих подсказок до 10 например
www.toolstown.ru
#
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");

#
Re: Реализация выпадающей подсказки (suggest) со списком товаров для поиска
Наталья, спасибо! получилось))
www.toolstown.ru
Авторизация