virtuemart

Сортировка по производителю внутри категории Virtuemart

Время от времени сталкивался с необходимостью сделать вывод товаров внутри категории в разрезе производителей, т.е. сделать так чтобы при изучении какой-либо категории потенциальный покупатель интернет-магазина мог быстро отфильтровать товары одного производителя. Ранее после недолгого поиска решения я отказывался от этой идеи, т.к. мозг рисовал мне какие-то сильно громоздкие конструкции, и решал вопрос создавая лишний категории созвучные с производителями. В этот раз я пошел до конца! :)


Для начала пришлось немного рихтонуть стандартный модуль VirtueMart Manufacturers (mod_virtuemart_manufacturers). Ищем файлик shop_browse_queries.php и находим его по адресу administrator/components/com_virtuemart/html/, после чего вносим небольшие изменения, а именно после фразы:

// GET ALL PUBLISHED PRODUCTS FROM THAT MANUFACTURER if (!empty($manufacturer_id)) { $table_names .= ',`#__{vm}_product_mf_xref`'; $where_clause[] = "manufacturer_id='".$manufacturer_id."'"; $where_clause[] = "`#__{vm}_product`.`product_id`=`#__{vm}_product_mf_xref`.`product_id` "; }

пишем

if (!empty($category_id)) { $where_clause[] = "#__{vm}_product_category_xref.category_id='".$category_id."'"; }

Далее правим файл mod_virtuemart_manufacturers.php, который ищем в /modules/mod_virtuemart_manufacturers. В этом файле кусок

URL."index.php?option=com_virtuemart&page=shop.browse&manufacturer_id=". $manufacturer->manufacturer_id )

меняем на вот такую конструкцию

URL."index.php?option=com_virtuemart&page=shop.browse&category_id=$category_id&manufacturer_id=". $manufacturer->manufacturer_id )

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

Пришлось подумать как заставить модуль появляться только в тех местах, где его появление уместно. Оказалось, что методов этих есть некоторое количество. Я остановился на Advanced Module Manager, который путем нехитрых настроек заставляет модуль появляться только на тех страницах Virtuemart и Joomla, где в этом есть необходимость.

Aboutadmin

2 comments

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

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>