База знаний
Поиск по категориям базы знаний
Все .htaccess 1C Bytehand CommerceML IIS nginx show_block SMS Sphinx Артикул Доступность Кастомизация Кастомизация админки Корзина Купить в один клик Магазин Меню Модуль МойСклад Мультиязычность Наличие товара Объявления Пагинация Пароль Перенос сайта Поиск Поиск по объявлениям Пользователи Права на файлы Сжатие CSS-файлов Скидка Создание товара Сортировка Статьи Счетчик Тема Установка Файловый архив Фильтр Шаблон Шаблон письма Шаблонный тег19.01.2016
Проблема
Как сделать так, чтобы поиск искал не целое слово, а только часть?
Решение
Если нужно, чтобы поиск был по вхождению слова, а не по всему слову, нужно изменить в файле modules/search/search.model.php строку 66:
$keys = DB::query_fetch_key_value("SELECT id, keyword FROM {search_keywords} WHERE keyword IN ('".implode("', '", $search_words)."')", "keyword", "id");
на:
$keys = DB::query_fetch_key_value("SELECT id, keyword FROM {search_keywords} WHERE keyword LIKE '%".implode("%' OR keyword LIKE '%", $search_words)."%'", "keyword", "id");
Строку 79:
foreach ($search_words as $k => $key)
на:
foreach ($keys as $key => $k)
Поиск будет работать при снятой в настройках модуля опции "Искать все слова сразу".