В модуле товаров 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);
}