voodoo_pan Опубликовано 12 февраля, 2016 Жалоба Поделиться Опубликовано 12 февраля, 2016 (изменено) Вопрос подымался не один раз, но так и ушел в коммерческую тему. Если есть добрые люди, помогите разобраться. Идея такая. В карточки товара создаем дополнительное поле упаковка и поле в 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 но пока такая задача не стоит.) Вот собственно и Вопрос в котором я хотел бы разобраться. Прошу Всех у кого есть драгоценное свободное время, провести мне ликбез. Изменено 12 февраля, 2016 пользователем voodoo_pan Цитата Ссылка на сообщение Поделиться на другие сайты
voodoo_pan Опубликовано 12 февраля, 2016 Автор Жалоба Поделиться Опубликовано 12 февраля, 2016 $('.qtyplus').click(function () { var $input = $(this).prev('input'); $input.val(parseInt($input.val()) + 1); Сюда я так понимаю необходимо передать наш (upak) $input.change(); return false; Здесь будет прибавлятся (кратно) упаковке, а в -1 заменить значение (upak) будет вычитать (кратно). Цитата Ссылка на сообщение Поделиться на другие сайты
Ogybil Опубликовано 13 февраля, 2016 Жалоба Поделиться Опубликовано 13 февраля, 2016 перечитал 2 раза так и не понял о чем речькак-то бы понятнее объяснили чего хотите А что бы запретить ввод 1,39 в input, нужно либо прикрутить валидатор, либо программно округлять в соответствии с необходимостью в php Цитата Ссылка на сообщение Поделиться на другие сайты
voodoo_pan Опубликовано 13 февраля, 2016 Автор Жалоба Поделиться Опубликовано 13 февраля, 2016 (изменено) перечитал 2 раза так и не понял о чем речькак-то бы понятнее объяснили чего хотите А что бы запретить ввод 1,39 в input, нужно либо прикрутить валидатор, либо программно округлять в соответствии с необходимостью в phpДоброе время суток.-Хочется что бы товар заказывался кратно упаковки (Ручка 1шт. цена 1,2) в карточки создаем дополнительное поле уп.=20шт.При заказе товара, при добавлении можно было купить только кратно 20+20+20 Если значение в уп. не указано, следовательно по умолчанию 1 Изменено 13 февраля, 2016 пользователем voodoo_pan Цитата Ссылка на сообщение Поделиться на другие сайты
Ogybil Опубликовано 13 февраля, 2016 Жалоба Поделиться Опубликовано 13 февраля, 2016 а название варианта изменить не пробовали: Товар: бумага ......Вариант: 20 шт.Цена указывается как 1,2*20 Цитата Ссылка на сообщение Поделиться на другие сайты
voodoo_pan Опубликовано 13 февраля, 2016 Автор Жалоба Поделиться Опубликовано 13 февраля, 2016 (изменено) а название варианта изменить не пробовали: Товар: бумага ......Вариант: 20 шт.Цена указывается как 1,2*20)))))))))))))))))) +5, Юмор принял, но мне надо так как, я спрашивал, а не как проще, а если делать как проще, возникнут вопросы, а как потом указать варианты..... Изменено 13 февраля, 2016 пользователем voodoo_pan Цитата Ссылка на сообщение Поделиться на другие сайты
Ogybil Опубликовано 13 февраля, 2016 Жалоба Поделиться Опубликовано 13 февраля, 2016 чтобы сделать универсальное решение...нет таким способм универсальное решенеи не сделать а если в другом товаре кратность не 20 а 30теоретически можно в config создать переменную кратности и умножать количество на эту переменную везде, но это рахитское решението что написал выше это без изменений и универсальносоздавайте вариант 1 (20 ручек), вариант 2 (50 ручек) и т.п. и не забудьте изменить карточку товара это только начало пути) Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 13 февраля, 2016 Жалоба Поделиться Опубликовано 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 раза... Цитата Ссылка на сообщение Поделиться на другие сайты
voodoo_pan Опубликовано 13 февраля, 2016 Автор Жалоба Поделиться Опубликовано 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 Цитата Ссылка на сообщение Поделиться на другие сайты
voodoo_pan Опубликовано 13 февраля, 2016 Автор Жалоба Поделиться Опубликовано 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) Цитата Ссылка на сообщение Поделиться на другие сайты
voodoo_pan Опубликовано 13 февраля, 2016 Автор Жалоба Поделиться Опубликовано 13 февраля, 2016 Kors верно подметил, проверку будем вносить в : 1. В карточке товара поле количество программно КОРРЕКТИРОВАТЬ послекаждого изменения, проведенного посетителем. Проводить округление вбольшую сторону до ближайшего положительного целого, кратного числу вупаковке.2. При каждом изменении кол-ва в корзине проводить аналогичную проверку и коррекцию.3. На странице корзины изменить выпадающие списки, чтобы значения в нем имели нужную кратность.(если таковой список имеется)4. Аналогично в админке на странице заказа при редактировании количеств товара. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.