Virtuemart 2, есть группа покупателей - Оптовики. Для них нужно установить минимальное значение количества для заказа товара, ну и шаг тоже..
Решение получилось не универсальное, но всеже..
Поля в карточке товара - Минимальный заказ и Шаг будем использовать только для группы Оптовиков, для остальных групп значение этих полей будет равно 1.
В представлении productdetails открываем файл default_addtocart.php и добавляем следующий код:
$db = JFactory::getDbo(); $user = JFactory::getUser(); $user1 = ($user->get('id')); $query = 'SELECT `virtuemart_shoppergroup_id` ' . ' FROM `#__virtuemart_vmuser_shoppergroups` ' . ' WHERE `virtuemart_user_id` =' .$user1 ; $db->setQuery($query, 0, 10); $groupId = $db->loadResult();
Код можно вставить после:
defined('_JEXEC') or die('Restricted access');
Тут же вверху файла заменим код для переменной $step:
if (isset($this->product->step_order_level)){ if ($groupId == 3) $step=$this->product->step_order_level; else $step=1; }else $step=1; if($step==0) $step=1;
Получив id группы покупателей для текущего авторизованного пользователя, мы будем проверять следующее условие - если группа покупателя совпадает с группой Оптовики, то мы выводим значение, которое в карточке товара, если нет устанавливаем значение равным 1.
<input type="text" class="quantity-input js-recalculate" name="quantity[]" onblur="check(this);" value="<?php if (isset($this->product->step_order_level) && (int)$this->product->step_order_level > 0) { //echo $this->product->step_order_level; if ($groupId == 3) { echo $this->product->step_order_level; }else{ echo '1'; } } else if(!empty($this->product->min_order_level)){ //echo $this->product->min_order_level; if ($groupId == 3) { echo $this->product->min_order_level; }else{ echo '1'; } }else { echo '1'; } ?>"/>
Теперь в файле:
components/com_virtuemart/helpers/cart.php
Находим функцию checkForQuantities и для минимального значения и шага добавляем проверку на группу.
Сначала, находим группу текущего пользователя $groupId, добавляем тотже код для определения группы, что и выше:
И меняем условия для min_order_level и step_order_level
if ($min != 0 && $quantity < $min && $groupId == 3)
и
if ($step != 0 && ($quantity%$step)!= 0 && $groupId == 3)
Где $groupId - id группы покупателей, для которых правила по количеству и шагу действуют.
Также, как вариант, можно было использовать пользовательское поле для минимального количества, но для данного случая подошел и такой вариант - с уже имеющимся полем в карточке товара.