Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

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

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

 

В карточки товара создаем дополнительное поле упаковка и поле в 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 но пока такая задача не стоит.)

 

Вот собственно и Вопрос в котором я хотел бы разобраться. Прошу Всех у кого есть драгоценное свободное время, провести мне ликбез.

Изменено пользователем voodoo_pan
Ссылка на сообщение
Поделиться на другие сайты

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

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

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

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

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

 

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

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

Изменено пользователем voodoo_pan
Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

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

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

Изменено пользователем voodoo_pan
Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

Ссылка на сообщение
Поделиться на другие сайты

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

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

 

 

Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

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

упаковке.

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

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

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

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...