voodoo_pan Posted February 12, 2016 Report Share Posted February 12, 2016 (edited) Вопрос подымался не один раз, но так и ушел в коммерческую тему. Если есть добрые люди, помогите разобраться. Идея такая. В карточки товара создаем дополнительное поле упаковка и поле в BD:(как сделать смотрим тут. http://forum.simplacms.ru/topic/1526-kak-dobavit-dopolnitelnoe-tekstovoe-pole-dlya-kategorii-/?p=16136) Теперь прошу Вас помочь как правильно написать следующее условие. Пусть вариант будет у нас upak Здесь задается количество заказываемого товара. <div class="qtyminus"></div> <input type='text' name="amount" value='1' class="qty" /> <div class="qtyplus"></div> обрабатывается здесь: // Product Quantity //----------------------------------------// $('.qtyminus').click(function () { var $input = $(this).next('input'); var count = parseInt($input.val()) - 1; count = count < 1 ? 1 : count; $input.val(count); $input.change(); return false; }); $('.qtyplus').click(function () { var $input = $(this).prev('input'); $input.val(parseInt($input.val()) + 1); $input.change(); return false; }); Я так понимаю что необходимо задать условие. <div class="qtyminus"></div> {if $product->upak}{n->1 x upak} <input type='text' name="amount" value='{n}' class="qty" /> <div class="qtyplus"></div> (необходимо сделать проверку upak на то что не 0 и не отрицательное число и как правильно записать 1х{upak}) Так же мне кажется необходимо сделать проверку на тот случай если кто то внесет число руками, тогда нужно проверить n / upak = 1 или целое, если нет округлить в большую. (Надо только подумать что будет если в upak указать 1,39 но пока такая задача не стоит.) Вот собственно и Вопрос в котором я хотел бы разобраться. Прошу Всех у кого есть драгоценное свободное время, провести мне ликбез. Edited February 12, 2016 by voodoo_pan Quote Link to post Share on other sites
voodoo_pan Posted February 12, 2016 Author Report Share Posted February 12, 2016 $('.qtyplus').click(function () { var $input = $(this).prev('input'); $input.val(parseInt($input.val()) + 1); Сюда я так понимаю необходимо передать наш (upak) $input.change(); return false; Здесь будет прибавлятся (кратно) упаковке, а в -1 заменить значение (upak) будет вычитать (кратно). Quote Link to post Share on other sites
Ogybil Posted February 13, 2016 Report Share Posted February 13, 2016 перечитал 2 раза так и не понял о чем речькак-то бы понятнее объяснили чего хотите А что бы запретить ввод 1,39 в input, нужно либо прикрутить валидатор, либо программно округлять в соответствии с необходимостью в php Quote Link to post Share on other sites
voodoo_pan Posted February 13, 2016 Author Report Share Posted February 13, 2016 (edited) перечитал 2 раза так и не понял о чем речькак-то бы понятнее объяснили чего хотите А что бы запретить ввод 1,39 в input, нужно либо прикрутить валидатор, либо программно округлять в соответствии с необходимостью в phpДоброе время суток.-Хочется что бы товар заказывался кратно упаковки (Ручка 1шт. цена 1,2) в карточки создаем дополнительное поле уп.=20шт.При заказе товара, при добавлении можно было купить только кратно 20+20+20 Если значение в уп. не указано, следовательно по умолчанию 1 Edited February 13, 2016 by voodoo_pan Quote Link to post Share on other sites
Ogybil Posted February 13, 2016 Report Share Posted February 13, 2016 а название варианта изменить не пробовали: Товар: бумага ......Вариант: 20 шт.Цена указывается как 1,2*20 Quote Link to post Share on other sites
voodoo_pan Posted February 13, 2016 Author Report Share Posted February 13, 2016 (edited) а название варианта изменить не пробовали: Товар: бумага ......Вариант: 20 шт.Цена указывается как 1,2*20)))))))))))))))))) +5, Юмор принял, но мне надо так как, я спрашивал, а не как проще, а если делать как проще, возникнут вопросы, а как потом указать варианты..... Edited February 13, 2016 by voodoo_pan Quote Link to post Share on other sites
Ogybil Posted February 13, 2016 Report Share Posted February 13, 2016 чтобы сделать универсальное решение...нет таким способм универсальное решенеи не сделать а если в другом товаре кратность не 20 а 30теоретически можно в config создать переменную кратности и умножать количество на эту переменную везде, но это рахитское решението что написал выше это без изменений и универсальносоздавайте вариант 1 (20 ручек), вариант 2 (50 ручек) и т.п. и не забудьте изменить карточку товара это только начало пути) Quote Link to post Share on other sites
Kors Posted February 13, 2016 Report Share Posted February 13, 2016 Хочется что бы товар заказывался кратно упаковки (Ручка 1шт. цена 1,2) в карточки создаем дополнительное поле уп.=20шт.При заказе товара, при добавлении можно было купить только кратно 20+20+20 Для этого надо проводить изменения не только в карточке товара при ПОПЫТКЕ укладки в корзину, но и по всей цепочке создания заказа и дальнейшей с ним работы - в частности, на странице корзины на сайте. А если надо только исправлять к-во в поле, то используйте JS-функцию Math.round() или подобные примерно так:qty=20*Math.ceil(qty/20) Есть сложная разработка:http://simpla-tuning.com/prodazha-na-shtuki-i-upakovkiТо, что Вам требуется, проще в 2-3 раза... Quote Link to post Share on other sites
voodoo_pan Posted February 13, 2016 Author Report Share Posted February 13, 2016 чтобы сделать универсальное решение...нет таким способм универсальное решенеи не сделать а если в другом товаре кратность не 20 а 30теоретически можно в config создать переменную кратности и умножать количество на эту переменную везде, но это рахитское решението что написал выше это без изменений и универсальносоздавайте вариант 1 (20 ручек), вариант 2 (50 ручек) и т.п. и не забудьте изменить карточку товара это только начало пути)Попробуем собрать Все, что я писал в кучу.1 - В карточки товара создаем дополнительное поле упаковка (upak) и поле в BD:(как сделать смотрим тут. http://forum.simplac...gorii-/?p=16136)2 - Устанавливаемым скрипт// Product Quantity //----------------------------------------// $('.qtyminus').click(function () { var $input = $(this).next('input'); var count = parseInt($input.val()) - 1; count = count < 1 ? 1 : count; $input.val(count); $input.change(); return false; }); $('.qtyplus').click(function () { var $input = $(this).prev('input'); $input.val(parseInt($input.val()) + 1); $input.change(); return false; }); Добавляем код в product.tpl <div class="qtyminus"></div> <input type='text' name="amount" value='1' class="qty" /> <div class="qtyplus"></div> Нужен правильно написанный код функций работы с (upak) <div class="qtyminus"></div>{if $product->upak}{n->1 x upak} <input type='text' name="amount" value='{n}' class="qty" /> <div class="qtyplus"></div>c проверкой (необходимо сделать проверку upak на то что не 0 и не отрицательное число и как правильно записать 1х{upak}) Так же мне кажется необходимо сделать проверку на тот случай есликто то внесет число руками, тогда нужно проверить n / upak = 1 илицелое, если нет округлить в большую. (Надо только подумать что будетесли в upak указать 1,39 но пока такая задача не стоит.) -Хочется что бы товар заказывался кратно упаковки (Ручка 1шт. цена 1,2) в карточки создаем дополнительное поле уп.=20шт.При заказе товара, при добавлении можно было купить только кратно 20+20+20 Quote Link to post Share on other sites
voodoo_pan Posted February 13, 2016 Author Report Share Posted February 13, 2016 Для этого надо проводить изменения не только в карточке товара при ПОПЫТКЕ укладки в корзину, но и по всей цепочке создания заказа и дальнейшей с ним работы - в частности, на странице корзины на сайте. А если надо только исправлять к-во в поле, то используйте JS-функцию Math.round() или подобные примерно так:qty=20*Math.ceil(qty/20) Есть сложная разработка:http://simpla-tuning.com/prodazha-na-shtuki-i-upakovkiТо, что Вам требуется, проще в 2-3 раза...Что бы использовать так функцию, туда еще значение {upak} нужно передать, qty=(upak)*Math.ceil(qty/upak) Quote Link to post Share on other sites
voodoo_pan Posted February 13, 2016 Author Report Share Posted February 13, 2016 Kors верно подметил, проверку будем вносить в : 1. В карточке товара поле количество программно КОРРЕКТИРОВАТЬ послекаждого изменения, проведенного посетителем. Проводить округление вбольшую сторону до ближайшего положительного целого, кратного числу вупаковке.2. При каждом изменении кол-ва в корзине проводить аналогичную проверку и коррекцию.3. На странице корзины изменить выпадающие списки, чтобы значения в нем имели нужную кратность.(если таковой список имеется)4. Аналогично в админке на странице заказа при редактировании количеств товара. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.