Неоднократно сталкиваюсь с вопросом, как сделать поиск товаров JoomShopping в текущей категории, в которой находится пользователь, с помощью модуля.
Если посмотреть конкретно страницу поиска, то там есть и выбор категории товаров и даже чекбокс поиска в дочерних категориях. Что же касаемо модуля, то действительно, такой функции нет.
Речь идет о модуле «Jshopping Search» от самого разработчика. Поэтому работать будем именно с ним.
Самое интересно, что в настройках этого модуля есть параметр «Поиск в категории», где можно выбрать категорию для поиска. Видимо разработчики предполагали создание для каждой категории отдельного модуля. Но ведь если категорий несколько десятков, то создавать для каждой модуль будет накладно.
Как это работает?
Как говорилось ранее, за основу возьмем классический модуль «Jshopping Search» и немного изменим его код, чтобы сделать поиск товаров JoomShopping в текущей категории. Важно иметь ввиду, что дальнейшие действия отменят работу параметра «Поиск в категории».
Устанавливаем модуль обычным способом и открываем файл default.php в каталоге /modules/mod_jshopping_search/tmpl/
Здесь, в самом начале добавляем следующий код:
<?php
$category_id = JRequest::getVar('category_id');
?>
Это позволит нам получить из параметров запроса идентификатор текущей категории. Теперь в этом же файле находим строку:
<input type = "hidden" name = "category_id" value = "<?php print $category_id?>" />
и полностью заменяем на следующую:
<input type="hidden" name="category_id" value="<?php echo ($category_id ? $category_id : ''); ?>" />
Теперь, если пользователь находится в какой-либо из категорий товаров JoomShopping, то поиск будет происходить именно по этой категории. Если же находится в любом другом месте, то поиск будет происходить по всем категориям.
Но, просто искать внутри текущей категории может не принести желаемого результата ввиду вложенностей категорий (дочерних) и в самой категории может не быть товаров, тогда поиск ничего не вернет.
Если необходимо искать не только в текущей категории, но и в ее дочерних, то достаточно добавить поле, сразу после того, которое заменили ранее:
<input type="hidden" name="include_subcat" value="1" />
Теперь поиск будет идти не только в текущей категории, но и в дочерних.
И тут появляется один нюанс, если мы находимся в карточке детального просмотра товара, то, там тоже присутствует параметр категории, поэтому если попытаться осуществить поиск, то поиск произойдет именно в категории, в которой находится просматриваемый товар.
Для тех, кого это не устраивает, нужно самый первый кусок кода, который вставили вначале заменить на следующий:
<?php
$layout = JRequest::getVar('layout');
if ($layout && $layout == 'category') {
$category_id = JRequest::getVar('category_id');
}
?>
Готово, сделать поиск товаров JoomShopping в текущей категории оказалось не так сложно.
Комментарии
Здесь еще никто не оставлял комментарии.