MIGO Web-Development - разработка и cоздание сайтов в Киеве, Украине

Создание сайтов, поисковое продвижение в Google. Сопровождение, тех.поддержка


звонить: +38 (093) 636 78 08
писать: web@migo.com.ua


Подключение пользовательского класса в minishop2 на примере класса доставки

Подключение пользовательского класса в minishop2 на примере класса доставки

Цель: Бесплатная доставка при общей сумме заказа свыше 1000 грн. Данный функционал в minishop2 “из коробки” отсутствует поэтому необходимо создавать пользовательский класс доставки. Для этого примера, в каталоге /core/components/minishop2/custom/delivery, создаем файл с произвольным названием но с обязательным окончанием *.class.php, например - msDeliveryFree.class.php, и следующим содержимым:

<?php
if(!class_exists('msDeliveryInterface')) {
    require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/msdeliveryhandler.class.php';
}

class msDeliveryFree extends msDeliveryHandler implements msDeliveryInterface {

    public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0) {

        $freedeliverysumm = 1000;
        $cart = $order->ms2->cart->status();
        $cart_cost = $cart['total_cost'];

        if($cart_cost > $freedeliverysumm){
            return $cost;
        }else{
            $delivery_cost = parent::getCost($order, $delivery, $cost);
            return $delivery_cost;
        }
    }
}

Теперь нам необходимо зарегистрировать новую службу по этому адресу, чтобы minishop2 увидел ее. Для этого выполняем ниже приведенный код в сниппете или через приложение Console в админке MODx Revo:

if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->addService('delivery', 'FreeDelivery',
        '{core_path}components/minishop2/custom/delivery/msDeliveryFree.class.php'
    );
}

Данный код нужно выполнить только 1 раз. Каждый раз регистрировать класс-обработчик не нужно. После чего остается выбрать созданный ранее Класс-обработчик в настройках доставки minishop2.

P.S. Для того чтобы удалить сервис нужно воспользоватся методом miniShop2::removeService(). Здесь нужно указать только тип и уникальное имя зарегистрированного сервиса:

if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->removeService('delivery', 'FreeDelivery');
}
проспект И.Мазепы 5 07300 Украина, Киевская обл., г. Вышгород, +38 (093) 636 78 08
Рассказать друзьям:

comments powered by Disqus