Live search addon for cs-cart

Модуль "Живой поиск"

Модуль "Живой поиск"

Мощный и функциональный набор инструментов для поиска на вашем сайте. Является достойной альтернативой облачным сервисам поиска по сайту, при этом обладая уникальными функциональными возможностями. Основные возможности модуля:

  • Поиск товаров, брендов, категорий, текстовых страниц и продавцов (для редакции multivendor) на вашем сайте;
  • Поиск товаров с возможностью фильтрации результатов поиска по категориям прямо в окне поиска;
  • Навигация по результатам поиска с клавиатуры;
  • Настройки полей, по которым необходимо производить поиск;
  • Исправление опечаток, неверной раскладки или ошибок в написании с помощью встроенного сервиса Yandex Speller;
  • На выбор две предустановленные темы c возможностью смены цветовой схемы каждой из них;
  • Ведение истории поиска с возможностью просмотра в 4-х срезах:
    - по запросам
    - по поисковым фразам
    - по товарам
    - по пользователям
  • История последних запросов покупателя может отображаться для него в поисковом окне
  • Функционал "Синонимы для поиска";
  • Функционал "Стоп-слова";
  • "Мотивация поиска" для стимулирования использования поиска покупателями;
  • Управление поисковыми фразами;
  • Ускорение поиска (путем кластеризации товаров).
  • [НОВИНКА] Турбо-кеш на базе Redis для снижения нагрузки и более быстроо поиска
Совместимость

Модуль совместим со всей веткой cs-cart 4.x с такими редакциями как CS-Cart, CS-Cart Ultimate, Multivendor, Multivendor Plus, Multivendor Ultimate. На данный момент нет информации о полной несовместимости модуля с какой-либо темой. В случае конфликта модуля с вашей темой обращайтесь в наш центр поддержки.

Дополнительно мы сделали модуль совместимым с модулями стороннего разработчика, чтобы производить поиск по их полям:

  • AB: Пользовательский H1 PRO
  • AB: SEO-страницы для фильтров

Модуль будет несовместим с любым другим модулем поиска.

Установка модуля

После оформления и оплаты, ваш заказ будет автоматически переведен в статус Оплачен в течение считанных минут. Статус заказа Оплачен означает активацию лицензии и вам на e-mail отправляется письмо с подтверждением о получении оплаты и письмо со ссылкой на скачивание модуля. Так же модуль всегда можно скачать в нашем разделе Управление лицензиями. Для установки модуля на ваш сайт, пожалуйста, выполните следующие шаги:

  1. Скачайте последнюю версию модуля на нашем сайте в разделе "Управление лицензиями" или по ссылке, отправленной по e-mail.
  2. Пройдите в раздел Модули → Управление модулями и в меню шестерёнки выберите Ручная установка.
  3. Выберите ранее скачанный файл и завершите установку модуля.

На этом установка модуля завершена. Для перехода на страницу настроек модуля выберите установленный модуль в разделе Модули → Модули CS-Commerce

Настройки

После установки модуля настройки устанавливаются на значения по умолчанию. Для доступа к настройкам модуля в панели администратора перейдите в раздел Модули → Модули CS-Commerce и из выпадающего списка выберите интересующий вас модуль.

Основные настройки

Выбор объектов поиска

Вкладка основных настроек позволяет выбрать объекты поиска, установить лимиты отображения. Рассмотрим некоторые из данных настроек более детально:

  • "Отображать в конце списка товары, которых нет в наличии" - Включение данной опции позволит принудительно, независимо от выбранной сортировки товаров, товары, которых уже нет в наличии отображать в конце списка.
  • "Автоматически повышать поисковую популярность товару" - Данная опция позволяет повышать ранг товара к конкретному поисковому запросу в автоматическом режиме. Чем больше пользователи кликают на товар из определенной поисковой фразы - тем выше будет отображаться данный товар для этой поисковой фразы. Данная опция работает только для сортировки "По релевантности с учетом популярности"
  • "Отобразить фильтр по категориям на базе результатов поиска" - Включите данную опцию для отображения блока фильтрации результатов поиска по категориям прямо в поисковом окне. Фильтровать можно сразу по нескольким категориям.
  • "Предлагать исправления" - Включите данную опцию для предложения исправлений опечаток, неправильной раскладки и т.д. Работает на базе сервиса Yandex Speller

Настройки поиска товаров 

В данном разделе настроек представлена возможность выбирать поля, по которым будет осуществляться поиск товаров. Отметьте чекбоксами поля, по которым хотите осуществлять поиск. Если отмечаете поиск по характеристикам - вам будет предложено выбрать конкретные характеристики, по которым нужно осуществлять поиск. 

Дополнительные поля для поиска вынесены в отдельную группу. По ним не будет осуществляться поиск, если включаете функцию "Ускоритель поиска".

Совет: Отмечайте только необходимые поля для поиска. Выбирайте только те характеристики для поиска, которые содежат полезную для покупатля информацию. Чем меньше  отмечено полей для поиска, тем меньше нагрузка на сервер и как следствие результаты поиска отображаются быстрее. 

Группа "Дополнительные настройки" позволяет задать минимальное количество символов для начала поиска товаров, включить автоматическую переадресацию на страницу товара, если в результатах поиска был найден только один товар, блокировать переход пользователя на страницу результатов поиска по нажатию на кнопку "Enter".

Поддерживаемые поля поиска:

  • Название, описание и краткое описание товара;
  • Артикул товара и ID товара;
  • Ключевые слова для поиска;
  • Характеристики и Опции товаров;
  • Мета-заголовок, Мета-описание, Мета-ключевые слова;
  • Поиск по тегам товара

Настройки для Multivendor

Для редакций Multivendor, Multivendor PLUS и Multivendor ULTIMATE будет отображаться дополнительная вкладка настроек. В ней собираются настройки, актуальны только для этих редакций. Можно включить поиск магазинов продавцов и выставить лимит их отображения. Так же можно выставить права на доступ к истории поиска товаров для продавцов.

 

Поиск по витринам

Секция "поиск по витринам" работает для мультивитринных магазинов. Для каждой текущей витрины можно выбрать другие витрины, из которых будут предлагаться найденные категории.

Управление внешним видом

Модуль имеет встроенный редактор стилей с предпросмотром окна результатов поиска. Администратору на выбор предлагается несколько тем отображения поискового окна (Modern и Classic), и также есть возможность менять цветовую палитру выбранной темы. 

Кроме того, в данном разделе настроек, администратор может отобразить или скрыть отдельные элементы поискового окна, такие как:

  • Цена товара
  • Артикул товара
  • Кнопка "Добавить в корзину"
  • Кнопка "Добавить в избранное"
  • Кнопка "В список сравнения"
  • Кнопка "Быстрый просмотр"

История поиска

Данный раздел предназначен для анализа поисковых запросов и анализа пользовательских предпочтений.
История поиска представлена в четырех группах:

  1. Все пользовательские запросы с информацией о пользователе, выбранном языке и меткой времени.
  2. История с группировкой по поисковым фразам. В данном разделе представлены все поисковые фразы с отображением информации о количестве запросов по поисковой фразе и количестве кликов на товары.
  3. История поиска с группировкой по товарам. Будет отображен список товаров, на которые покупатели переходили из поиска с данными о кликах на каждый из товаров, сколько и какие поисковые фразы использовались, чтобы данный товар был выбран покупателем.
  4. История поиска по пользователям. Позволяет видеть историю поиска по конкретным пользователи, если пользователь был авторизован. 

Управление Синонимами

Для поисковых фраз или их части вы можете задавать синонимы. Зачастую, одни и те же товары могут иметь разные названия из-за языковых диалектов или сокращений слов. Например, на сайте вы продаете Микроволновые печи, а покупатели зачастую набирают "Микроволновка". Для того, чтобы покупатель в итоге все же увидел Микроволновые печи, нужно добавить синоним для поисковой фразы "Микроволновка". Для одной поисковой фразы вы можете задавать неограниченное количество синонимов. 

Совет: Задавайте только релевантные синонимы. В противном случае в результатах поиска покупатель будет видеть не то что он действительно ищет. Так же, чем больше синонимов для поисковой фразы, тем медленнее работает поиск для такого поискового запроса.

Синонимы можно добавлять используя интерфейс панели администратора, а также через импорт/экспорт данных. 

Глобально включать или выключать работу Синонимов в поиске вы можете переключателем, расположенным в верхней части бокового меню.

Управление стоп-словами

В некоторых случаях товары не нужно выводить для некоторых поисковых запросов. Такое часто происходит с короткими поисковыми фразами. Например, на сайте вы продаете и Фен, и Фенол. Таким образом, для поисковой фразы "Фен" выводить товары Фенол не логично. Для того, чтобы такие товары не выводились, вы можете добавить для поисковой фразы "Фен" стоп-слово "Фенол". Для одной поисковой фразы можно добавлять несколько стоп-слов. Стоп-слово это не обязательно одно слово, оно может быть целым словосочетанием или предложением. 

Совет: Не задавайте слишком короткие стоп-слова или слова, которые могут быть частью слова других словосочетаний, т.к. непреднамеренно можете заблокировать релевантные результаты поиска.

Стоп-слова можно добавлять, используя интерфейс панели администратора, а также через импорт/экспорт данных. 

Глобально включать или выключать работу стоп-слов в поиске вы можете переключателем, расположенным в верхней части бокового меню.

Мотивация поиска

Для стимулирования использования поиска на вашем сайте можете воспользоваться функцией мотивации поиска. Задайте послания или предложения для покупателей, которые могут их заинтересовать. Задавать можно неограниченное количество предложений, все они будут отображаться эмуляцией набора в поисковом поле поочередно. 

Включать или выключать работу мотивации поиска вы можете переключателем, расположенным в верхней части бокового меню.

Поисковые фразы

Раздел "Поисковые фразы" предназначен для управления подсказками во время начала набора поисковой фразы в окне поиска, а также для отображения рекомендуемых товаров, заданных администратором для конкретной поисковой фразы. Рекомендуемые товары выводятся вне зависимости от того, релевантны они поисковому запросу или нет.

Задавайте популярные поисковые запросы для вашего сайта и экономьте время ваших покупателей на наборе текста.

Переключатели Включение/Выключение функции подсказок и функции отображения рекомендуемых товаров находится в верхней части бокового меню.

Управлять поисковыми фразами можно используя интерфейс панели администратора, а также через импорт/экспорт данных. 

Ускоритель поиска

Ускоритель поиска предназначен для высоконагруженных проектов, у которых товарная база превышает 100 тыс товаров и результаты поиска отдаются ощутимо медленно. Принцип работы ускорителя поиска:

  • Индексация товаров формирует кластеры товаров на базе первых букв всех слов индексируемых полей товара.
  • Размер кластера - это кол-во букв, которые будут формировать кластер. Рекомендуемый параметр для латинской и кириллической раскладки 2.
  • Во время поискового запроса функция ускорителя определяет к каким кластерам соотносится поисковая фраза и ищет товары только в рамках этих кластеров.

Таким образом, объем данных для поиска уменьшается в несколько раз, а зачастую в десятки раз.

Ускоритель поиска имеет ограничения по результатам поиска. Он не ищет поисковую фразу в середине или конце слова. Поиск всегда будет работать с учетом первых букв поисковой фразы. Например, если пользователь набирает "amsung", то товары в названии которых есть слово "Samsung" не будут найдены. При этом на запрос "Sams" поиск успешно вернет такие товары. 

Индексация происходит автоматически при изменении товаров в панели администратора, но перед первым включением функции ускорителя запустите индексацию товаров. 

Турбо-кеш

Турбо-кеш - это кеш, который формируется на базе поисковых запросов пользователей. Результаты каждого нового поискового запроса сохраняются в кеше. В случае, когда поисковый запрос уже есть в кеше, модуль пропускает поисковый запрос к базе данных и возвращает список товаров сразу из кеша. Тем самым резко сокращается время ответа на запрос и снижается нагрузка на сервер. При этом цены товаров всегда выгружаются из базы данных. Это означает, что вам не нужно очищать турбо-кеш, если вы обновляете у товаров только цены. Турбо-кеш работает на базе хранилища Redis. Для включения турбо-кеша на вашем сервере должна быть установлена и запущена служба Redis.

Для вкоючение Турбо-кеша на сервере должна быть установлена и запущена служба Redis. При попытке включения турбо-кеша на сервере, де Redis не доступен, вы увидите предупреждающее сообщение о невозможности включить турбо-кеш. 

Функция Турбо-кеш является опциональной, в случае, если вы хотите начать использовать турбо кеш, но на вашем сервере не установлена служба Redis, вам следуем обратиться в службу технической поддержки вашего сервера для ее включения.

Когда следует очищать турбо кеш вручную или по расписанию.

Турбо-кеш имеет встроенную логику самоочистки по времени жизни кеша, или по триггеру (обновление или редактирование товара). Если вы используете скрипты массового импорта товаров (создания товаров), то после каждого массового импорта рекомендуется очищать Турбо-кеш.
В случае, когда у вас настроена самоочистка при обновлении или измении товара, и товары редактируются или создаются из панели администратора, ручная очистка не требуется. 

Функция самоочистки при измении или обновлении товара не удаляет весь турбо кеш, а только часть кеша (группы или кластеры), в которые входит редактируемый товар. Это позволяет Турбо-кешу работать более эффективно. 

Обновление модуля

Для того, чтобы иметь доступ к обновлениям модуля, у вас должен быть активный период подписки на обновления. При истекшем периоде подписки, вам будут доступны только обновления, выпущенные до даты истечения вашей подписки. Продлить подписку на обновления можно в разделе "Управление лицензиями" на нашем сайте. 

Модуль поддерживает поставку обновлений через Центр обновлений CS-Cart. О выходе новых версий модуля вас оповестит встроенный Центр уведомлений Cart (колокольчик). Обновление модуля с помощью Центра обновлений позволит без потерь настроек данных модуля произвести переход на более новую версию модуля.

Непосредственно перед обновлением, крайне рекомендуется делать полный бэкап сайта (базы данных и файлов) вашего магазина средствами сервера или хостинга.

Обновление модуля через Центр обновлений:

  1. В верхнем меню пройдите в раздел Администрирование → Центр обновлений;
  2. В меню шестеренки нажмите "Проверить доступные обновления"
  3. Cреди списка доступных обновлений найдите нужное и нажмите кнопку Обновить;
  4. Следуйте всем инструкциям, которые будут показаны при процедуре обновления;
  5. Рекомендуется произвести очистку кэша CS-Cart после завершения установки обновлений удалением папки var/cache на вашем сервере или добавлением в адресную строку параметра ctpl (пример: https://domain.com/admin.php?ctpl).

Переустановка модуля удалением:

Переустановка модуля означает удаление настроек и данных модуля. Переустановка позволит получить чистую установку модуля. Для переустановки модуля с сохранением настроек и данных, пожалуйста, обратитесь в наш Центр поддержки для оказания такой услуги. 

Для полной переустановки модуля без сохранения данных выполните следующие шаги:

  1. Пройдите в раздел Модули → Управление модулями и найдите старый установленный модуль.
  2. Нажмите в меню шестеренки модуля кнопку удалить.
  3. Скачайте последнюю версию модуля на нашем сайте в разделе "Управление лицензиями".
  4. Пройдите в раздел Модули → Управление модулями и в меню шестеренки выберите Ручная установка.
  5. Выберите ранее скачанный файл и завершите установку модуля.

Техническая поддержка

Техническая поддержка модуля уже включена в его стоимость. Прежде чем обращаться в центр поддержки, пожалуйста, убедитесь что вы используете последнюю выпущенную версию модуля. Старые версии  модуля не обслуживаются технической поддержкой.

Для того, чтобы воспользоваться нашей технической поддержкой, выполните следующие шаги:

  1. На нашем сайте центра поддержки https://helpdesk.cs-commerce.com/ авторизуйтесь под своей учетной записью;
  2. Нажмите на кнопку "Новая заявка";
  3. Заполните все необходимые поля и создайте заявку (Вы получите на e-mail письмо с подтверждением);
  4. Ожидайте ответ специалиста (на ваш e-mail придет уведомление об ответе на вашу заявку) в соответствии с регламентами работы службы техподдержки.

Если Вы не получили ответ в течение сроков, обозначенных в регламентах, напишите нам на e-mail [email protected] сообщение с темой заявки и мы постараемся решить ваш вопрос в ближайшее время.

Техническая поддержка по диалогу в чате на сайте, прямым телефонным обращениям или e-mail письмам не осуществляется. Вся помощь проходит через центр поддержки. Внимательно изучайте документацию к модулю и условия технической поддержки перед созданием обращения.

 

Ограничения и предупреждения

Рекомендуем ознакомиться с общими ограничениями:

  1. Фрагменты кода  или некоторые файлы модуля могут иметь закрытую (закодированную) часть. Закодированная часть не создает проблемы в доработке модуля;
  2. Модуль будет работать только на тех доменах, которые указаны в лицензии пользователя. При попытке использования решения на установках CS-Cart, домены которых не включены в лицензию, модуль будет автоматически выключен;
  3. Установка локально не допускается системой лицензирования. Чтобы модуль работал на дополнительном домене (псевдониме) укажите этот псевдоним на странице управления лицензиями. На один домен допускается указать до трех псевдонимов для нужд тестирования и разработки.
  4. Главный домен лицензии вы можете менять самостоятельно на странице управления лицензиями. 
Для доступа к изменению/добавлению доменов и псевдонимов лицензии, подписка на обновления должна быть активной. Для изменения домена лицензии с истекшим периодом подписки, сначала необходимо продлить подписку на обновления. 

 

Для разработчиков

PHP Hooks

Модуль не поддерживает стандартную работу php хуков cs-cart, поэтому была разработана своя схема подключения, которая вписываеся в стандарты cs-cart.
В модуль встроены хуки для подключения:

  1. hooks_get_products Variables: 
      $ls_settings - array() addon settings
      $company_id -  int() current storefront ID
      $params - array() query data
      $fields - array() fields to display
      $join - string() Join data
      $condition -  string() conditions string
      $sorting - string() sorting
      $limit - string() products limit
  2. hooks_get_joins Variables: 
     $ls_settings - array() addon settings
     $params - array() query data
     $join - string() Join data
  3. hooks_get_conditions Variables: 
     $ls_settings - array() addon settings
     $params - array() query data
     $condition -  string() conditions string
  4. hooks_get_fields Variables: 
     $ls_settings - array() addon settings
     $params - array() query data
     $fields -  array() fields array
  5. hooks_get_product_phrase_condition Variables: 
     $ls_settings - array() addon settings
     $part  - string() One of Parts of search phrase
     $tmp -  array() Array of part of phrase conditions
  6. hooks_get_speedup_product_data Variables: 
     $ls_settings - array() addon settings
     $product_id - int() Product ID
     $search_string -  string() String of values to be indexed
     $lang_code - string() Language code of indexation string
  7. hooks_get_categories Variables: 
     $ls_settings - array() addon settings
     $company_id - int() Current runtime company ID
     $params - array() query data
     $fields -  array() fields to be selected
     $join - string() Join data
     $condition  -  string() conditions string
     $cats_where -  array() Array of phrase conditions
     $limit  - string() limit of getting categories
  8. hooks_get_brands Variables: 
     $ls_settings - array() addon settings
     $company_id - int() Current runtime company ID
     $params - array() query data
     $fields -  array() fields to be selected
     $join - string() Join data
     $condition  -  string() conditions string
     $phrase_condition -  array() Array of phrase conditions
     $sorting - string() sorting data string
     $limit  - string() limit of getting brands
  9. hooks_get_pages  Variables: 
     $ls_settings - array() addon settings
     $company_id - int() Current runtime company ID
     $params - array() query data 
     $join - string() Join data
     $condition  -  string() conditions string
     $phrase_condition -  array() Array of phrase conditions 
     $limit  - string() limit of getting brands
  10. hooks_get_vendors  Variables: 
    $ls_settings - array() addon settings
     $company_id - int() Current runtime company ID
     $params - array() query data 
     $join - string() Join data
     $condition  -  string() conditions string
     $phrase_condition -  array() Array of phrase conditions 
     $limit  - string() limit of getting brands
  11. hooks_before_response Variables:
    $ls_settings - array() addon settings
    $company_id -  int() current storefront ID
    $params - array() query data
    $response -  array() data to response

На примере встроенного модуля my_changes подключимся к хуку hooks_get_products, который расположен непосредственно перед запросом получения товаров:

  1. Создайте файл hooks.post.php в директории модуля app/addons/my_changes/schemas/csc_live_search
  2. Добавьте в массив $schema['developers']['hooks_get_products']['variants'] значение в виде названия, ключ которого является директорией файла с функцией. Пример кода файла hooks.post.php:
    <?php
    if (!defined('BOOTSTRAP')) { die('Access denied'); }
    $schema['developers']['hooks_get_products']['variants']['/app/addons/my_changes/fn_file_name_same_as_function_name.php']='My changes hook function';
    return $schema;
  3. Создайте соотвествующий файл, на который ссылаетесь из файла hooks.post.php и создайте в нем одну функцию, название которой совпадает с названием файла. В нашем случае это fn_file_name_same_as_function_name, принимайте отправляемые переменные и модифицируйте для получения необходимых условий поиска. Пример содержания файла:
    <?php
    if (!defined('BOOTSTRAP')) { die('Access denied'); }
    function fn_file_name_same_as_function_name($ls_settings, $company_id, $params, $fields, $join, &$condition, $sorting, $limit){
    	
    }
  4. Очистите кеш в панели администратора, зайдите в настройки модуля живого поиска в секцию для разработчиков и выберите хук, который вы добавили в селектбоксе. Сохраните настройки.

На этом интеграция с хуком модуля живого поиска завершена. 

 

JQUERY Event

При необходимости изменения структуры или данных в результатах поиска окна живого поиска используйте отслеживание специального события. В живом посике встроено два специальных события:

  1. cls.after.insert - вызывается когда пользователь набирает текст и модуль вставляет данные в блок.
  2. cls.after.append - вызывается когда пользователь нажимает показать еще и модуль дополнительно отображает контент.

Как использовать: Используйте конструкцию $(document).on()) для отлавливания события:

$(document).on( "cls.after.insert", function(event, data, elm) {	
});
$(document).on( "cls.after.append", function(event, data, elm) {	
});

Где data - это массив  всех переданных данных с сервера, и elm - это блок, куда данные вставляются или добавляются.

Пример использования, где добавляется акртикул товара в конец названия товара:

$(document).on( "cls.after.insert", function(event, data, elm) {
    if (data.items){
        $.each(data.items, function(i, product){
            $(elm).find('li[pid="' + product.product_id + '"] .clsProduct').append(" " + product.product_code);      
        });
    }    
});

История версий

Информацию журнала изменений обо всех выпущенных версиях модуля можно просмотреть по этой ссылке.