Зачастую вознкиает ситуация, когда в интернет-магазине необходимо установить минимальную сумму заказа. Делается это для того, чтобы отсечь весь низкомаржинальный поток заказов и работать только с теми, которые действительно прибыльны.
Задача для реализации на MODX довольно протсая, но даже она часто ставит в тупик, как владельцев интернет-магазина, так и неопытных разработчиков.
Ниже мы приводим кейс, как реализовать автоматическое отслеживание суммы заказа и в случае, если сумма заказа меньше минимально установленной. не производить оформление заказа с соответствующим уведомлением пользователю.
1. Создаём файл core/components/minishop2/custom/order/myorderhandler.class.php с содержимым:
<?php class myOrderHandler extends msOrderHandler { public function submit($data = array()) { $min_price_order = $this->modx->getOption('ms2_minimum_price_order'); $cart_status = $this->ms2->cart->status(); $currency = $this->modx->lexicon('ms2_frontend_currency'); if( $cart_status['total_cost'] < $min_price_order ) { return $this->error( 'ms2_order_err_total_price', array(), array('price'=>$min_price_order, 'currency'=>$currency) ); } return parent::submit($data); } }
2. Создаём настройку в namespace «minishop2» - ms2_minimum_price_order со значением суммы заказа, например: 5000.
3. В настройке ms2_order_handler_class указываем только что созданный класс обработчик, вот так: myOrderHandler.
4. Пользуемся