В модуле товаров Virtuemart mod_virtuemart_product товары можно выводить по категориям, но иногда нужно вывести какие-то конкретные товары. Тогда было бы удобно если бы была возможность выбора товаров по id.

Для этого нужно сделать небольшие изменения в модуле товаров. А чтобы обновления виртуемарта не затерли, сделанные изменения, можно сделать копию модуля и поменять его название.

Что меняем в модуле..

Первое, это добавляем поле для ввода id товаров. В файл mod_virtuemart_product.xml добавим поле

<field
          name="product_ids"
          type="text"
          default=""
          label="Product ids"
          description="Product ids"
        />

Id товаров будем вводить через пробел.

И, второе, подредактируем файл mod_virtuemart_product.php

Вначале файла добавим строку для получения, добавленного поля

$product_ids = $params->get('product_ids', '');

И вместо

$products = $productModel->getProductListing($Product_group, $max_items, $show_price, true, false,$filter_category, $category_id);
$productModel->addImages($products);

Добавим

if (empty($product_ids)){
 
 $products = $productModel->getProductListing($Product_group, $max_items, $show_price, true, false,$filter_category, $category_id);
 $productModel->addImages($products);
}else{
 $product_ids = trim($product_ids);
 $product_ids = explode(' ', $product_ids);
 
 $productModel = VmModel::getModel('Product');
 
 $products = array();
 foreach($product_ids as $virtuemart_product_id){
  $products[] = $productModel->getProduct(trim($virtuemart_product_id));
 
 }
 
 $productModel->addImages($products);
 
}

 

Комментарии   

#3 Николай 03.03.2018 15:07
Цитирую Виталий:
Все бы ничего, только надо было дописать до конца.
Что бы все это заработало, надо в файле mod_virtuemart_product.php еще и подключить наше новое поле ввода.
Если исходить из этого примера то выше в сборке // Setting нужно написать $product_ids = $params->get('product_ids',''); вот тогда все и заработает.

Да, нужно сначала получить содержимое, добавленного поля. Добавил строку, спасибо!
#2 Виталий 03.03.2018 08:14
А то получается просто будет рандомный вывод
#1 Виталий 03.03.2018 08:13
Все бы ничего, только надо было дописать до конца.
Что бы все это заработало, надо в файле mod_virtuemart_ product.php еще и подключить наше новое поле ввода.
Если исходить из этого примера то выше в сборке // Setting нужно написать $product_ids = $params->get('p roduct_ids','') ; вот тогда все и заработает.

Чтобы сделать комментарий, нужно авторизоваться на сайте!