Joomshopping Search — несколько модулей поиска

На любом большом интернет-магазине должен присутствовать поиск по товарам. В противном случае, посетитель может просто не найти интересующий его товар. Так и с JoomShopping, разработчики предумотрели это и создали модуль поиска по товарам — JoomShopping Search.

Всё бы ничего, но, Вы когда-нибудь пробовали поставить на одной странице 2 модуля поиска? Странный вопрос, однако, может оказаться так, что по дизайну задумано поле поиска не только в шапке сайта, но и в конце странице, или дополнительное поле поиска размещается в отдельном сайдбаре для мобильного меню, причин может быть масса.

Как оказалось, разработчики этого не предусмотрели и, в результате размещения более одного модуля поиска товаров JoomShopping, работать будет последний из них.

С чем это связано? Всё просто — банальная ошибка логики скрипта валидации поля ввода.

Как это работает?

Откройте файл модуля JoomShopping Search /modules/mod_jshopping_search/tmpl/default.php

Обратите внимание на обработчик события отправки формы:

Здесь можно заметить, что он берет поле ввода, проверяет данные и если всё корректно отправляет данные на сервер.

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

Давайте исправим код на следующий:

Здесь изменили обработку так, чтобы данные брались из текущей формы jQuery(this) дочернего поля с именем name=»search».

Вообще, в идеале подобные скрипты нужно выносить в отдельный файл, чтобы не происходило несколько выводов одного и того же скрипта. Но это уже другой вопрос.

Теперь, если Вы попробуете искать товары через любое из полей поиска, поиск будет срабатывать корректно. Ничего сложного.

Полезность статьи

Оцените, на сколько полезной оказалась статья.
1 балл2 балла3 балла4 балла5 баллов
3,50 / 5 баллов
2 участников
Комментарии

Здесь еще никто не оставлял комментарии.

Добавить комментарий

* - поля обязательные для заполнения. E-mail не публикуется.