Jump to content

Recommended Posts

Вопрос подымался не один раз, но так и ушел в коммерческую тему. 

Если есть добрые люди, помогите разобраться. Идея такая.

 

В карточки товара создаем дополнительное поле упаковка и поле в 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 by voodoo_pan
Link to post
Share on other sites

        $('.qtyplus').click(function () {
            var $input = $(this).prev('input');
            $input.val(parseInt($input.val()) + 1); Сюда я так понимаю необходимо передать наш (upak)
            $input.change();
            return false;
 

Здесь будет прибавлятся (кратно) упаковке, а в -1 заменить значение (upak) будет вычитать (кратно).

Link to post
Share on other sites

перечитал 2 раза так и не понял о чем речь

как-то бы понятнее объяснили чего хотите

 

А что бы запретить ввод 1,39 в input, нужно либо прикрутить валидатор, либо программно округлять в соответствии с необходимостью в php

Link to post
Share on other sites

перечитал 2 раза так и не понял о чем речь

как-то бы понятнее объяснили чего хотите

 

А что бы запретить ввод 1,39 в input, нужно либо прикрутить валидатор, либо программно округлять в соответствии с необходимостью в php

Доброе время суток.

-Хочется что бы товар заказывался кратно упаковки (Ручка 1шт. цена 1,2) в карточки создаем дополнительное поле уп.=20шт.

При заказе товара, при добавлении можно было купить только кратно 20+20+20

 

Если значение в уп. не указано, следовательно по умолчанию 1

post-2457-0-37235200-1455365328_thumb.png

Edited by voodoo_pan
Link to post
Share on other sites

а название варианта изменить не пробовали:

 

Товар: бумага ......

Вариант: 20 шт.

Цена указывается как 1,2*20

))))))))))))))))))   +5, Юмор принял, но мне надо так как, я спрашивал, а не как проще, а если делать как проще, возникнут вопросы, а как потом указать варианты.....

Edited by voodoo_pan
Link to post
Share on other sites

чтобы сделать универсальное решение...

нет таким способм универсальное решенеи не сделать а если в другом товаре кратность не 20 а 30

теоретически можно в config создать переменную кратности и умножать количество на эту переменную везде, но это рахитское решение

то что написал выше это без изменений и универсально

создавайте вариант 1 (20 ручек), вариант 2 (50 ручек) и т.п.

 

и не забудьте изменить карточку товара это только начало пути)

Link to post
Share on other sites

Хочется что бы товар заказывался кратно упаковки (Ручка 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 раза...

Link to post
Share on other sites

чтобы сделать универсальное решение...

нет таким способм универсальное решенеи не сделать а если в другом товаре кратность не 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

 

 

Link to post
Share on other sites

Для этого надо проводить изменения не только в карточке товара при ПОПЫТКЕ укладки в корзину, но и по всей цепочке создания заказа и дальнейшей с ним работы - в частности, на странице корзины на сайте.

 

А если надо только исправлять к-во в поле, то используйте 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)

Link to post
Share on other sites

Kors верно подметил, проверку будем вносить в :

 

1. В карточке товара  поле количество программно КОРРЕКТИРОВАТЬ после

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

большую сторону до ближайшего положительного целого, кратного числу в

упаковке.

2. При каждом изменении кол-ва в корзине проводить аналогичную проверку и коррекцию.

3. На странице корзины изменить выпадающие списки, чтобы значения в нем имели нужную кратность.(если таковой список имеется)

4. Аналогично в админке на странице заказа при редактировании количеств товара.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...