Минимальная сумма заказа minishop2
Ребята, как сделать минимальную сумму заказа для выбранного способа доставки.
Как сделать, например, чтобы если «самовывоз» то нет ограничения по минимальной сумме.
if ($modx->event->name == 'msOnSubmitOrder'){
if($cart = $order->ms2->cart->status()) {
if($cart['total_cost'] < 1000) {
$modx->event->output('Сумма вашего заказа должна превышать 1000 руб!');
}
}
}
Работает этот способ, но независимо от выбранного способа доставки.Как сделать, например, чтобы если «самовывоз» то нет ограничения по минимальной сумме.
Комментарии: 14
Вам нужно добавить также условие по ID способа доставки, который самовывывоз, чтобы выполнялось только для него. $delivery->get('id')
<?php
if ($modx->event->name == 'msOnSubmitOrder'){
if($cart = $order->ms2->cart->status()) {
if($cart['total_cost'] < 1000 && $delivery->get('id') == 1) {
$modx->event->output('Минимальная сумма заказа для выбранного способа доставки 10000 руб!');
}
}
}
Не получается.
неверно.
if($cart['total_cost'] < 1000 && (1 == $delivery->get('id'))) /*если ID самовывоза=1*/{..}
Не работает (
<?php
if ($modx->event->name == 'msOnSubmitOrder'){
if($cart = $order->ms2->cart->status()) {
if($cart['total_cost'] < 1000 || $delivery->get('id') == 'payment_1') {
$modx->event->output('Минимальная сумма заказа для выбранного способа доставки 10000 руб!');
}
}
}
так попробуй <?php
$cart_status = $order->ms2->cart->status();
$order_status = $order->get();
if ($modx->event->name == 'msOnSubmitOrder'){
if ($cart_status['total_cost'] < 10000 && $order_status['delivery'] <> 1) {
$modx->event->output('Минимальная сумма заказа для выбранного способа доставки 10000 рублей!');
}
}
Вот так получилось.
Здравствуйте, Андрей!
Подскажите ваш код выше его в сниппет или это плагин. Помогите разобраться, нужно тоже реализовать минимальную сумму при заказе на доставку.
Подскажите ваш код выше его в сниппет или это плагин. Помогите разобраться, нужно тоже реализовать минимальную сумму при заказе на доставку.
Плагин на событие
msOnSubmitOrderСоздаёшь новый плагин, вешаешь на указанное событие, в коде указываешь свою минимальную сумму и ID способа доставки для которого она действует. В моем примере ограничение минимальной суммы действует для всех доставок кроме самовывоза
$order_status['delivery'] <> 1
для конкретного способа доставки будет, например, — $order_status['delivery'] == 2
Благодарю, Андрей! Все работает!!!
Попробовал не работает может и за обновления минишопа
Конечно уже много времени и несколько обновлений назад это было, но вряд-ли в каком-либо из обновлений изменились события или статусы.
Пробуйте, должно работать.
Пробуйте, должно работать.
Вариант, когда нужно предоставить возможность указать минимальную сумму для клиента в ClientConfig:
<?php
$cart_status = $order->ms2->cart->status();
$order_status = $order->get();
$min_price_order = $modx->getOption('min_price_order');
if ($modx->event->name == 'msOnSubmitOrder'){
if ($cart_status['total_cost'] < $min_price_order && $order_status['delivery'] == 2) {
$modx->event->output('Минимальная сумма заказа для выбранного способа доставки ' . $min_price_order . ' рублей!');
}
}
Вот еще один способ, только через коллбэки
<script>
$(document).ready(function() {
miniShop2.Callbacks.add('Order.getcost.response.success', 'Order_submit_response_success', function(responce) {
var cost = responce.data['cost'],
min_price = {'ms2_order_min_price' | config};
if (cost < min_price) {
miniShop2.Callbacks.add('Order.submit.before', 'Order_submit_before', function() {
miniShop2.Message.error('Недостаточная сумма заказа, заказ отправляется от ' + min_price + ' руб.!');
$('#error_message').text('Недостаточная сумма заказа, заказ отправляется от ' + min_price + ' руб.!');
return false;
});
}
});
});
</script>
Подскажите как правильно подключить Ваш скрипт
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.