Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.

Минимальное количество единиц товара при заказе

  • 26 января 2017 г.
  • Столкнулся с такой проблемой, необходимо указать минимальное количество товара, скажем 5 штук, но сделать это так, чтобы покупатель не смог поставить меньше. Есть ли готовые решения?
    • 26 января 2017 г. , редакция: 28 января 2017 г.
    • Вам нужно подправить 2 шаблона:
      1. /modules/shop/views/shop.view.buy_form_list.php (строка 127)
      2. /modules/shop/views/shop.view.buy_form.php (строка 182)
      Строку надо подправить следующую:
      Код
      <input type="text" value="1" name="count" class="number" pattern="[0-9]+([.|,][0-9]+)?" step="any">
      Сменить надо на эту:
      Код
      <input type="text" value="5" onkeypress="if( event.keyCode == 13 ){ return false }" onblur="if( this.value < 5 ){ this.value = 5;alert(\'Нельзя купить менее 5 шт.\'); return false }" name="count" class="number" pattern="[0-9]+([\.|,][0-9]+)?" step="any">
      Таким образом меньше 5 шт. поставить будет нельзя.

      Это один из вариантов. Другой вариант с аналогичным результатом - изменить файл /modules/shop/shop.action.php (42 строка) c
      Код
      if(! $count)
      {
      $this->result["errors"][0] = $this->diafan->_('Количество товара должно быть больше нуля.');
      return;
      }
      $count = $count > 0 ? $count : 1;
      на
      Код
      if($count < 5)
      {
      $this->result["errors"][0] = $this->diafan->_('Минимальный заказ от 5 штук.');
      return;
      }
      $count = $count > 4 ? $count : 5;
      В результате минимальное число товара для заказа будет пять штук.



      Минус обоих решений в первую очередь в том, что добавлять можно от 5 шт. товара, даже если в корзине уже присутствует 5 или более. Получается, что нельзя положить в корзину 8 товаров путём добавления 5 + 3. Т.е. нужно сразу добавлять нужное количество.
      • 26 января 2017 г.
      • ЛЮБИМОВ ПАВЕЛ (WEBNAVIGATOR), не совсем так. Точнее не до конца. Нужно еще в модуле cart поставить условие: не заносить в корзину, если количество товаров меньше определенного числа. Хотя, я думаю Вы это и без меня бы догадались, если Вам заплатили бы за данное решение.

        В любом случае, успехов.
        • 26 января 2017 г. , редакция: 28 января 2017 г.
        • Пока переписывал свой пост, вы ответили на изначальный вариант с <input type="number">, который не учитывал ввод с клавиатуры.

          Я в основном специализируюсь на вёрстке, поэтому советую в основном варианты решений со стороны шаблонов (вьюх). Разумеется, любое решение на уровне узла обработки данных практичнее и правильнее, чем на уровне ввода. Но вроде как работает.



          Обратил внимание, что в Internet Explorer клик по Enter обрабатывается немного по-другому, поэтому подправил код - по нажатию Enter возвращает false (не добавляет товар), также добавил false в условие по потере фокуса для надёжности.

Новости

  • 3 августа
  • С 1 сентября 2021 года увеличивается стоимость аренды сайтов на платформе Diafan.Cloud. Это ежегодное небольшое повышение, связанное с инфляцией и ростом стоимости услуг провайдеров. Кроме того, любые изменения ценовой политики Diafan направлены на развитие системы и улучшение качества предоставляемых услуг. С сентября стоимость месяца аренды вырастет: для интернет-магазинов – с 1180 до 1260 рублей; для бизнес-сайтов – с 680 до 730 рублей.

Блоги

  • 7.10.2021
  • Мы разработали гибкую линейку тарифов, чтобы каждый пользователь мог подобрать оптимальное решение для своего проекта. При выборе ориентируйтесь на объем ресурсов и количество входящей в стоимость поддержки – это основные отличия между тарифами Diafan.Cloud.