Последние темы


Пользовательский способ прибавления количества товара

  • Здравствуйте! Необходимо сделать прибавление количества товара не по 1, а по определенному числу, находящемуся в ТВхе. Например, продажа товара, который продается пачками! Цена указывается за 1 шт, а всего 32шт в пачке, т.е. когда мы нажимаем "в корзину", появляется хелпер и там количество (input-count) должно быть 32, а не 1 как по умолчанию! И когда мы нажимаем + т.е. прибавить количество то прибавляться должно на 32 т.е. 32 -> 64 -> 98 и т.д. При этом товары разные и количество штук в пачках разное - 32, 9, 100 и др., а это количество штук в пачке хранится в ТВхе, ну скажем quantity. Подскажите, пожалуйста, как это реализовать.
    Я начал с того, что добавил в чанк sendtobasketinlist скрытый Input:
    <input type="hidden" name="shk-quant" value="[[+tv.quantity]]">
    Далее я полез в assets/components/shopkeeper3/web/js/shopkeeper.js, нашел там метод прибавления товара - setCounterToField, далее пытался сделать, чтобы в if( ii == 1 ) el.val( cnt + 1 ); вместо 1 подставлялось число из скрытого input, но проблема возникла с идентифицированием скрытого input у конкретного товара, ведь их на странице как минимум 12.
    В целом, я знаком с основами JSовского ООП, но опыта мало, чтобы быстро разобраться в чужом коде! Надеюсь на Вашу помощь!

  • Например, можно использовать jQuery UI Spinner

    https://jsfiddle.net/6v0d4zb7/

    Хелпер можно отключить.

 

Последние комментарии

  • A

    Участник @Andchir написал в CatalogFill и filter_export:

    нужно через разделитель || сделать 2 столбца и т.д.

    Создаете дополнительную колонку (можно несколько) после ТВ, значение которого нужно разделить. ID ТВ для такой колонки можно указать, тот которого не существует.

    //разбивка по столбцам при импорте и экспорте (content|tv|category) $cf_config['content_row'] = array( ... array('Параметры товара', array(2, 'tv')), array('Параметры товара - вторая колонка', array(2000, 'tv'))// Дополнительная колонка в экселе );

    Далее в конфигурационном файле разделяете с помощью функции filter_export().

    //функция для фильтрации значений при ЭКСПОРТЕ function filter_export($value_arr, $doc_id=0){ $output_arr = $value_arr; if(!empty($output_arr[2])) { $tmp = explode('||', $output_arr[2]);// Разделяем строку, получаем массив if (count($tmp) >= 2) { $output_arr[2] = $tmp[0]; $output_arr[2000] = $tmp[1]; } } return $output_arr; }

    работает отлично, спасибо

    Читать далее
  • нужно через разделитель || сделать 2 столбца и т.д.

    Создаете дополнительную колонку (можно несколько) после ТВ, значение которого нужно разделить. ID ТВ для такой колонки можно указать, тот которого не существует.

    //разбивка по столбцам при импорте и экспорте (content|tv|category) $cf_config['content_row'] = array( ... array('Параметры товара', array(2, 'tv')), array('Параметры товара - вторая колонка', array(2000, 'tv'))// Дополнительная колонка в экселе );

    Далее в конфигурационном файле разделяете с помощью функции filter_export().

    //функция для фильтрации значений при ЭКСПОРТЕ function filter_export($value_arr, $doc_id=0){ $output_arr = $value_arr; if(!empty($output_arr[2])) { $tmp = explode('||', $output_arr[2]);// Разделяем строку, получаем массив if (count($tmp) >= 2) { $output_arr[2] = $tmp[0]; $output_arr[2000] = $tmp[1]; } } return $output_arr; }

    Читать далее
  • A

    @Andchir еще хотел спросить, как можно реализовать разделение столбцов при экспорте тип ввода ТВ param-edit, в экселе выводит видalt text нужно через разделитель || сделать 2 столбца и т.д., я понимаю что нужно через filter_export, можете подсказать, спасибо

    Читать далее
  • Покажите скриншот, чтобы было видно что вы вводите в значение по умолчанию.

    Читать далее