Все товары для этого типа — Virtuemart 1.9 + Chery Picker

vm_logo_marble_foss_1024

Наверное многие из Вас сталкивались с задачей, когда в карточке товара необходимо сделать ссылку «Все товары для этого типа». Лично у меня появилась такая необходимость, когда я делал интернет-магазин на автомобильную тему, где Заказчику понадобилась кнопка «Все товары для этой модели». Кстати, вот и сама карточка товара, где это успешно реализовано.

QIP Shot - Screen 020 И так, для того, что бы сделать такую кнопку в карточке товара, нам понадобиться:

  1. Модуль Chery Picker и Fast Seller
  2. Назначение типов и параметров для товаров через Fast Seller
  3. Небольшая кастомизация файлов шаблона

После установки Chery Picker и Fast Seller (Внимание, процесс установки описан в файле Readme.pdf, который прилагается к архиву), переходим в раздел компоненты Fast Seller. Переходим в раздел Create Filtres и создаем новый тип продукта, нажав на кнопку New Product Type. В поле Name указываем: Фильтр, в поле Description: Фильтр товаров и сохраняемся (Save). Далее кликаем на имя нашего типа и слева выбираем Add new parameter. Создаваемые параметры, полностью будут зависеть от специфики Вашего товара, мой первый параметр называется Марка и его настройки выглядят следующим образом: screen1 Далее по такому же принципу создаем остальные параметры, например «Модель». После того, как тип и его параметры были созданы, мы можем переходить к процедуре связи параметров с товарами. Для этого переходим на вкладку: Assign Filters. Здесь всё просто, сначала выбираем для товара тип «Фильтр» и нажимаем Save. Далее выбираем параметры. Если товаров очень много, тогда проще сделать данную ассоциацию через базу данных (если будет интерес к этой теме, то распишу как это можно сделать). screen2 Теперь, когда все товары связаны с определенными параметрами, у нас появляется возможность осуществлять по ним сортировку и собственно вывести ссылку на все товары с определенным параметром. Для этого, делаем следующее:

  1. Менеджер модулей -> Chery Picker -> Включаем модуль и в поле Show filters of this Product Type ID= указываем ID фильтра (находим его в Fast Seller)
  2. С помощью Chery Picker фильтруем товары, выбираем в нем нужные параметры, в моем случае я выбрал модель и марку. После фильтрации копируем ссылку из адресной строки, у меня получилась такая: index.php?option=com_virtuemart&page=shop.browse&Itemid=29&category_id=&limitstart=0&product_type_id=4&product_type_4_marka_comp=texteq&product_type_4_marka=ACURA&product_type_4_model_comp=texteq&product_type_4_model=RDX+2012-
  3. Теперь давайте разберем данную ссылку: product_type_4 — идентификатор типа (у Вас он может быть другого номера) marka=ACURA — название параметра + значение параметра model=RDX+2012 — название параметра + значение параметра

У Вас все эти данные будут отличаться от моих. Теперь нам необходимо вместо ACURA получить изменяемое значение, то есть когда человек заходит в один товар у него ACURA, а в другом может быть уже BMW и т. д. Именно по этому нам необходимо обратиться к базе данных и получить значение для каждого товара:

Понятно? Тогда объясняю. Из таблицы #__vm_product_type_4 мы берем значение поля marka и выводим его. Теперь давайте получим модель:

<?php $db_my = new ps_DB(); $db_my->setQuery("SELECT model FROM #__vm_product_type_4 WHERE product_id=$product_id"); $ids = $db_my->loadResultArray(); echo implode(',',$ids); ?>

Ну, а теперь сделаем ссылку:

<a href="index.php?option=com_virtuemart&page=shop.browse&Itemid=29&category_id=&limitstart=0&product_type_id=4&product_type_4_marka_comp=texteq&product_type_4_marka=<?php $db_my = new ps_DB(); $db_my->setQuery("SELECT marka FROM #__vm_product_type_4 WHERE product_id=$product_id"); $ids = $db_my->loadResultArray(); echo implode(',',$ids); ?>&product_type_4_model_comp=texteq&product_type_4_model=<?php $db_my = new ps_DB(); $db_my->setQuery("SELECT model FROM #__vm_product_type_4 WHERE product_id=$product_id"); $ids = $db_my->loadResultArray(); echo implode(',',$ids); ?>">Все товары для <?php $db_my = new ps_DB(); $db_my->setQuery("SELECT model FROM #__vm_product_type_4 WHERE product_id=$product_id"); $ids = $db_my->loadResultArray(); echo implode(',',$ids); ?></a>

Вставляйте её сюда: сom_virtuemart/themes/vmtheme192/templates/product_details/flypage.tpl.php, например сразу после:

<?php echo $file_list ?>

.


Комментировать