Расчет стоимости доставки через внешний калькулятор
В интернет-магазине uShop, кроме вычисления стоимости доставки по матрице или через сервис “Яндекс.Доставка”, есть возможность подключать собственные алгоритмы расчета. Для этого используется модуль “Внешний калькулятор”:
Чтобы начать пользоваться модулем, включите опцию “Использовать модуль расчёта стоимости доставки” и выберите в ней значение “Внешний калькулятор”. После этого нажмите на кнопку “Сохранить”.
Когда пользователь выбирает способ доставки с внешним калькулятором, в форме заказа учитывается скрытое поле (шаблон “Страница служебных форм”, $ORDER_FIELDS$):
<input type="hidden" name="custom_delivery_tax" value="">
Значение атрибута value этого поля прибавится к стоимости заказа в качестве наценки за доставку.
Особенности:
- значение в поле custom_delivery_tax записывается в условных единицах магазина и не зависит от выбранной пользователем валюты
- значение может иметь отрицательную величину, таким образом сумма будет вычтена из общей стоимости заказа (в этом случае такса фактически превратится в скидку)
- значение может быть отредактировано на странице заказа администратором
Чтобы наценка отобразилась при оформлении заказа, необходимо записать в скрытое поле значение и обновить форму заказа:
<script>
// переменная, в которую будет помещена величина наценки
var calcPrice = 0;
// выбираем способ доставки с внешним калькулятором
var calcDelivery = $('#del-type-1');
// обработчик событий выбора способа доставки с внешним калькулятором
calcDelivery.on('click', function(){
// произвести расчет calcPrice
// …
// если поле custom_delivery_tax не существует
if($('input[name="custom_delivery_tax"]').length == 0){
// добавить его
$('#checkout-form').append('<input type="hidden" name="custom_delivery_tax" value="0">');
}
// записать стоимость доставки в поле custom_delivery_tax
$('input[name="custom_delivery_tax"]').val(calcPrice);
// обновить форму заказа
shEvOrd('delivery', calcDelivery);
});
</script>
#del-type-1 — идентификатор способа доставки (может быть #del-type-1, #del-type-2, #del-type-3 и так далее).
Эту функцию можно спрятать в отдельный файл, а вызывать после подключения скрипта прямо из шаблона служебных форм таким образом:
myCalculator($DAY$);
Если собрать все воедино, то получим следующий код, который нужно разместить после $ORDER_FIELDS$
шаблона "Страница служебных форм":
<script src="/js/myCalculator.js"></script> <script>myCalculator($DAY$);</script>
Конечно, это только один из примеров, как можно использовать внешний калькулятор. Попробуйте реализовать самостоятельно калькулятор:
- для товаров из определенной категории;
- для товаров с определенным id;
- для пользователей определенной группы;
- в зависимости от указанного города.
В данном случае логика расчета может быть реализована на JavaScript или PHP. С помощью внешнего калькулятора реализованы следующие скрипты: