В сегодняшней заметке я хочу поделиться кейсом, который позволяет реализовать продажу товаров по весу/количеству через кнопки «+/-».
Решение принимает значение шага (+100, -100) и единицу товара (шт., кг, упаковки).
Как это работает?
Решение скрывает форму ввода количества и размещает вместо нее кнопки «+/-», нажимая на которые пользователи меняют количество добавляемого товара в корзину. При этом есть возможность настроить решение таким образом, что добавляться будет количество кратное заданному числу.
Подключение скрипта
Скачайте weight_counter.js и загрузите его на сайт. Разместите приведенный CSS в общих стилях сайта. Затем, согласно приведенному ниже примеру подключите скрипт в необходимых шаблонах сайта.
Стоит отдельно описать параметры функции:
gid — id товара, здесь ничего менять не требуется. Всегда оставляйте $ID$;
grid — размер шага, на величину которого будет меняться значение количества (веса). Он же выводится как минимально допустимое значение. Например, число 100 позволит добавить в корзину кратные только ста числа: 100, 500, 1200, 10500 и т.д.;
unit — единица измерения товара. Может быть граммом, тонной, метром, штукой или упаковкой. Играет роль чисто информационную, показывая пользователю, сколько товара он добавляет в корзину. При этом цена у товара должна быть за 1 указанную единицу и не зависеть от размера шага (grid);
block_pref — переменная, необходимая для корректного пересчета цен при изменении количества. По умолчанию 'id', если не задано другое.
В результате должно получиться следующее:
Гибкая настройка
Важно, что подключая скрипт в шаблонах, вы можете использовать условные операторы, чтобы гибко реализовать его работу. Например, задать для категорий различный размер шага и единицы измерения. В категории "смеси" это могут быть килограммы, кратные 5, в категории "кабели" 1 метр (или погонный метр), а в остальных — не подключать скрипт, оставив обычный ввода количества.
Как настроить разные значения для разных групп? Для $CID$= 1 задать значения 1 шт а для $CID$= 2 - 100 гр.
Вариант с <?if($CID$= 1)?> <script> $(document).ready(function(){ weightCounter($ID$, 100, 'м.'); }); </script> <?else?> <script> $(document).ready(function(){ weightCounter($ID$, 1, 'шт.'); </script> <?endif?> не работает. Скрипт срабатывает только на CID 1, остальные игнорируются.