Помощь Кто как реализовал Кратное добавление товара в Корзину?

Тема в разделе "PrestaShop", создана пользователем vitos1401, 30 дек 2018.

Информация :
Приветствую гость, обрати внимание! Темы которые закреплены в разделах, в скором времени будут откреплены. Правила раздела PrestaShop

(Не актуальные темы) Каталоги:Модули PrestaShop 1.7Модули PrestaShop 1.5 - 1.6Шаблоны PrestaShop 1.7Шаблоны PrestaShop 1.5 - 1.6
(Не актуальные темы) Поиск / Запросы:Модули PrestaShop 1.7Модули PrestaShop 1.5 - 1.6Шаблоны PrestaShop 1.7Шаблоны PrestaShop 1.5 - 1.6
Полезная информация:Поддержка и помощь c PrestaShopУбираем ПрестаТраст, стучалки и прочую рекламуСовместные покупки модулей и шаблоновПеревод Prestashop и модулей
Модераторы: trace
  1. vitos1401

    vitos1401

    Регистр.:
    3 ноя 2012
    Сообщения:
    184
    Симпатии:
    268
    Всех приветствую!
    Подскажите, кто как реализовал Кратное добавление товара в Корзину (для PS 1.7.4.4) ?
    Задача такая: Кратность должна быть привязана к Минимальному количеству, доступному для продажи.
    Т. е., если у товара минимальное количество для продажи 6 шт (столько в упаковке и она не делится), то и добавляется/удаляется в Корзину - 6 шт., если 12 шт. - то добавляется, соответственно, 12 шт.
    Шаг добавления - равен минимальному количеству.

    Варианты с наборами товаров и прочие полу-решения разумеется не подходят.
    Интересует вариант кода в Product.js ...
    Похожее решение для PS 1.6 (фрагмент), где в "val(currentVal -/+ 1)" вместо "1" добавлена единица кратности - "прикрутить" не получилось.
    Что делаю не так?
    Заранее благодарен.

    Код:
    // The button to increment the product value
    $(document).on('click', '.product_quantity_up', function(e){
        e.preventDefault();
        fieldName = $(this).data('field-qty');
        var currentVal = parseInt($('input[name='+fieldName+']').val());
        if (!allowBuyWhenOutOfStock && quantityAvailable > 0)
            quantityAvailableT = quantityAvailable;
        else
            quantityAvailableT = 100000000;
        if (!isNaN(currentVal) && currentVal < quantityAvailableT)
            $('input[name='+fieldName+']').val(currentVal + 1).trigger('keyup');
        else
            $('input[name='+fieldName+']').val(quantityAvailableT);
    
        $('#quantity_wanted').change();
    });
    // The button to decrement the product value
    $(document).on('click', '.product_quantity_down', function(e){
        e.preventDefault();
        fieldName = $(this).data('field-qty');
        var currentVal = parseInt($('input[name='+fieldName+']').val());
        if (!isNaN(currentVal) && currentVal > 1)
            $('input[name='+fieldName+']').val(currentVal - 1).trigger('keyup');
        else
            $('input[name='+fieldName+']').val(1);
    
        $('#quantity_wanted').change();
    });
     
    Последнее редактирование: 30 дек 2018
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.374
    Симпатии:
    2.324
    Не проще сделать единицей не штуку, а упаковку... В описании указать "В упаковке 6 штук" и ценник указывать за упаковку, а не за единицу?
     
    _sashok нравится это.
  3. vitos1401

    vitos1401

    Регистр.:
    3 ноя 2012
    Сообщения:
    184
    Симпатии:
    268
    Спасибо за ваш ответ. Но, этот вариант не подходит (с него я и начинал). Дело в том, что заказчиком определена такая задача:

    В Списке товаров, в Сетке товаров и в Карточке товаров обязательно должна быть единица "штука", и цена должна выводится по умолчанию за "штуку", и "штука" должна быть комбинацией по умолчанию... + должна иметь место вторая комбинация "упаковка 6 шт".

    Клиент должен видеть цену за штуку и, дескать, мотивироваться к покупке. И поэтому ценник должен быть за "штуку" - во всех "видных местах".
    Я пытаюсь реализовать следующее: две комбинации: "Штука" и "Упаковка 6 шт .. 12 шт .. 24 шт .. и так далее". При выборе "упаковка 6 шт" - в корзину должна добавляется 1 ед. товара. При выборе "штука" - в корзину должно складываться кратное количество (столько сколько в упаковке).

    Вывести и сделать неактивной комбинацию "штука" - нельзя (она по умолчанию) - т. к. при открытой карточки товара складывается впечатление, что товара нет в наличии (кнопка "В корзину" не активна) - и не каждый покупатель станет кликать на "упаковке", чтобы увидеть активную кнопку "В корзину" + эта не активность будет видна в Списке товаров.

    Товаров (комбинаций) более 100к (интеграция с 1С) - вручную ничего не добавить. Все цены, скидки, количество в упаковке для каждой комбинации беру автоматом из 1С.
    На стороне Престы осталось автоматизировать кратность добавления. т. к. из 1С для штуки я это ограничение передать не могу.
     
    Последнее редактирование: 30 дек 2018
  4. sergiykhd

    sergiykhd Sergiy

    Регистр.:
    17 апр 2013
    Сообщения:
    1.050
    Симпатии:
    759
    Недавно делал подобно для клиента, нужно было вывести цену за литр, просто добавил кусок кода, где цена делится на объем и всего делов.

    Может просто выводить цену за ед, отдельным кодом, ну а в корзину будет ложится как писали выше.
     
    Горбушка нравится это.
  5. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.374
    Симпатии:
    2.324
    А сделать дополнительное поле с ценой за штуку и выводить его? Я престу не знаю, но в других движках доп поля есть...
     
    sergiykhd нравится это.
  6. sergiykhd

    sergiykhd Sergiy

    Регистр.:
    17 апр 2013
    Сообщения:
    1.050
    Симпатии:
    759
    да, в карточке товара есть такое поле, только нужно будет вводить для каждого товара отдельно, в моем предложении выводится автоматом
     
  7. vitos1401

    vitos1401

    Регистр.:
    3 ноя 2012
    Сообщения:
    184
    Симпатии:
    268
    Благодарю за ответ. Согласен, вывести цену за штуку в шаблоне в любом месте - это не проблема... Я наверное, сам немного отошел от темы. Вопрос немного в другом:
    Как реализовать кратное добавление товара в корзину? Т .е. как изменить шаг добавления товара в корзину и привязать этот шаг к минимально-разрешенному количеству товара?
    Буду благодарен за разъяснение.
     
    Последнее редактирование: 30 дек 2018
  8. vitos1401

    vitos1401

    Регистр.:
    3 ноя 2012
    Сообщения:
    184
    Симпатии:
    268
    Всех приветствую! Кратность добавления/удаления товаров (на странице Товар и странице Корзина) - допилить получилось.
    Осталась не решенной другая задача:
    Никак не хочет работать Кратность для Списка товаров (и Плитки товаров). По аналогии с Товаром и Корзиной, (изменения внесенные в CartController.php, Core,js и шаблонах product-add-to-cart.tpl и cart-summary-product-line.tpl) - не работают для Категорий.
    Т. е. в Категории имеется кнопка "В корзину" и поле количество товара, но не получается установить шаг добавления (min, step, max) для режима Список/Сетка товаров.
    Ну, а так как Новинки, Рекомендованное и Лидеры продаж на Главной используют настройки Сетки (Плитки) , то и там, соответственно Кратность не хочет учитываться.
    Буду благодарен за совет или наводку.
     
    Последнее редактирование: 27 янв 2019
  9. Belena27089

    Belena27089

    Регистр.:
    16 авг 2016
    Сообщения:
    325
    Симпатии:
    228
    делала добавлением новой переменной, много чего меняла, если очень надо выставлю тестовый сайт.Что было сделано: в админке выставляется количество товаров которое можно положить в корзину мин, то есть добавляет не по одной как в стандартном функционале, а нужное количество сразу по 2, по 3 и тд - добавляет и удаляет кратно.В корзину нужное количество можно добавлять как из списка ,так и с карточки товара ,и в корзине.Но мин мах нет, только определённое количество, но для каждого товара своё.
    Ой, не посмотрела, что в 1.7
     
    DaoKakao нравится это.
  10. DaoKakao

    DaoKakao

    Регистр.:
    2 мар 2013
    Сообщения:
    308
    Симпатии:
    452
    Всё равно стоило бы выложить, можно и на форуме ТВ, и на их гитхабе в виде feature request или чего-то в этом роде... А уж родина вас не забудет :ay::party: