Перейти к содержанию
Форум поддержки пользователей VamShop

Реализация поиска с уточнением запроса


Рекомендуемые сообщения

Стандартный поиск ищет по тегам товара, которые проставляются в карточке товара.

ЧТо хорошо.

В эти теги удобно вводить доп. слова товара, по которым НУЖНО осуществлять поиск, но не нужно выводить в карточке товара.

 

Пример, запчасть на авто, может быть от разных производителей (оригинал или корейские-китайские заменители).

Т.е. артикул у товара есть оригинальный, а есть "подобные" артикулы, типа 34759347, 3847АН, 3457-4838-А,

4857.3885.

 

Т.е. артикул может быть через черточку, палочку, точку и подобные варианты.

 

Особого веселья добавляет то, что и пользователь может ввести артикул поиска КАК УГОДНО.

 

в связи с этим после долгих споров решили, что ВВОДИМЫЙ пользователем в строке поиска запрос должен автоматом убирать точки, запятые,слеши и т.д. И полученный после исключения спецсимволов запрос отправлять в стандартный поиск.

 

как такое реализовать? где можно/должно перехватывать введеный посиковый запрос и преобразовывать ПЕРЕД отправкой в поиск ВамШопа?

 

Ссылка на сообщение
Поделиться на другие сайты

1. В спецификации HTML5 для поля появилась возможность задать регулярное выражение - "pattern" в Вашем случае будет [A-Za-z0-9]{2,} Форма не будет отправляться, пока поле не будет заполнено правильно.

2. Можно на jQuery плагин подобрать, который не даст вводить в поле поиска символы, не являющиеся буквами и цифрами.

3. Либо в коде перед выполнением запроса к базе убирать лишнее.

 

Вам нужно первый вариант попробовать - он самый простой:

В файле шаблон/source/boxes/search.php в строка где описывается поле ввода станет примерно такой:

$box->assign('INPUT_SEARCH', vam_draw_input_field('keywords', '', 'pattern="[A-Za-z0-9]{2,}" '));

При нажатии на Enter или на кнопку поиска будет ругаться, что поле заполнено неправильно.

Ссылка на сообщение
Поделиться на другие сайты
  • 2 weeks later...

Магазин как и поиск в нем, все таки для клиентов, а не програмеров, согласны? :)

 

поэтому все-таки правильным будет п.3.

"перед запросом к базе..."

где стринг в select передается?

т.е. в каком месте попарсить стринг запроса перед пеердачей в базу?

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...