Ограничение количества товара для заказа в virtuemart

Опубликовано: 29 августа, 2018
Обновлено: 5 февраля, 2023
Категория: Общие вопросы

В этой статье речь пойдет про настройку кнопки Купить в зависимости от наличия товара и ряда других условий.

Скрыть кнопку Купить у товаров, которых нет в наличии 

Если товара нет в наличии, то вместо кнопки Купить можно показать кнопку Уведомить меня. Пользователь сможет оставить свои данные и при поступлении товара ему придет письмо. Подробнее можно прочитать в этой статье.

Если нужно просто скрыть кнопку Купить без показа Уведомить меня, то в файле /components/com_virtuemart/sublayouts/addtocart.php замените

на

Чтобы эти изменения сохранились при обновлении virtuemart необходимо переопределить файл в папке /components/com_virtuemart/sublayouts/.

Аналогичным образом нужно переопределить и все остальные файлы, о которых пойдет речь далее, подробнее в этой статье (раздел Обновление virtuemart).

Ограничить количество товаров для покупки

При создании товара можно задать минимальное/максимальное количество, доступное для заказа.

Эти настройки зададут min/max ограничения для поля выбора количества, но при повторном заказе сверх лимита никакого уведомления не последует и покажется просто пустое окно.

Это можно ввести покупателя в заблуждение, поэтому было бы хорошо заранее проинформировать о максимальном количестве, доступном для заказа. Для этого в файле /components/com_virtuemart/sublayouts/addtocart.php после

добавьте

В итоге получится примерно следующее.

Для вывода информации во всплывающем окне в файле /components/com_virtuemart/views/cart/tmpl/padded.php перед

добавьте

Добавление только одной единицы товара

Рассмотрим случай когда в корзину может быть добавлена только одна единица каждого товара и у товаров, уже добавленных в корзину, вместо кнопки Купить должна показываться кнопка перехода в корзину.

В файле /components/com_virtuemart/sublayouts/addtocart.php заменим

на

В Расширения > Менеджер языков > Переопределение констант создадим новую языковую константу

Теперь если товар в корзине, то у него вместо кнопки Купить будет показа ссылка на корзину.

Чтобы при клике на кнопку Купить она автоматически менялась необходимо отключить показ всплывающего окна и добавить небольшой скрипт.

Для отключения всплывающего окна в файле /сomponents/com_virtuemart/assets/js/vmprices.js закомментируйте

и закомментируйте

Чтобы кнопка Купить автоматически менялась на все страницы сайта добавьте скрипт

С помощью скрипта кнопке на 2 сек. присваивается класс loading, который можно использовать для добавления анимации, имитирующей загрузку.

Финальный этап - добавление стилей. Ниже только самые необходимые стили. Вид кнопки Товар в корзине можно настроить с помощью класса product-in-cart.

Для анимации использовалась эта картинка.

Изменение цвета кнопки Купить, у товаров, которые добавлены в корзину

Если нужно просто изменить цвет кнопки Купить у товаров, которые уже в корзине, то можно это можно сделать проще. Достаточно в файле /components/com_virtuemart/sublayouts/addtocart.php после

добавить

и там же заменить

на

После этого у товаров в корзине у блока с кнопкой Купить появится дополнительный класс in-cart, который можно использовать для стилизации.

Надеюсь, что статья была полезна и пригодится в вашей работе.

Все скриншоты сделаны в шаблоне NanoShop.

6 комментариев

    7Hogik

    Спасибо за статью. Недавно ознакомился с виджетами тк (ПЕК и СДЕК) на сайтах компании для их добавления на сайт. Планируете ли Вы написать статью о их внедрении в Ваш шаблон?

      admin

      admin

      Рад, что статья оказалась полезной. По СДЕК не планировал пока писать статьи.

    Messir

    Messir

    Небольшое уточнение, ибо сам недавно сломал голову, почему товар вроде есть, а кнопки "купить" нету)))) Код:

    лучше писать как:

    ибо базовая интерпретация подразумевает определение "количество товара на складе минус количество заказанных", другими словами, если было куплено десять единиц этого товара, а вы (при нулевом остатке) добавили пять единиц, то кнопки "купить" все равно не будет. Столкнулся с этим еще на ВМ2.

      admin

      admin

      Спасибо за дополнение.

    Алексей

    Может подскажите как допилить?
    Есть несколько производителей, хотелось бы сделать следующее -
    при попытке положить в корзину товар от разных производителей появлялось бы сообщение что покупатель пытается выбрать товар от от другого производителя и если он согласен то можно продолжить покупку товара от др производителя.

      admin

      admin

      Нужно перехватывать событие добавление товара в корзину и сравнивать текущий товар со всеми товарами в корзине.
      Получить список товаров в корзине можно с помощью кода

      Детальнее не смогу ответить, нужно разбираться.

Комментарии закрыты

С 15-18 июня admin в отпуске.

Ответы на все вопросы и ссылки на товары будут присланы 19 июня.

Спасибо за понимание и хороших выходных.

×