Программное API

14 мая 2020, 07:00

Процессоры

coupons/create

Пример создания промо-кода через процессор:

$mspc2 = $modx->getService('mspromocode2', 'msPromoCode2',
    MODX_CORE_PATH . 'components/mspromocode2/model/mspromocode2/');
$mspc2->initialize($modx->context->key);
$tools = $mspc2->getTools();

// Данные промо-кода
$data = [
    'code' => 'coupon_code', // Код
    'list' => 'default', // Список

    'discount' => '50%', // Скидка
    'count' => 20, // Кол-во

    'startedon' => 0, // Начало действия (timestamp)
    'stoppedon' => 0, // Конец действия (timestamp)

    'description' => '', // Описание

    'active' => true, // Включено

    'showinfo' => true, // Показывать предупреждения

    'oneunit' => false, // На одну единицу товара

    'onlycart' => true, // Только в корзине

    'unsetifnull' => true, // Не применять без скидки
    'unsetifnull_msg' => '', // Текст при отмене

    'oldprice' => false, // Без старой цены
];

$response = $tools->runProcessor('mgr/coupons/create', $data);
if ($errors = $tools->formatProcessorErrors($response)) {
    // Печатаем ошибку
    print_r($errors);
} else {
    // Печатаем массив с промо-кодом
    print_r($response->getObject());
}

coupons/remove

Пример удаления промо-кода через процессор:

$mspc2 = $modx->getService('mspromocode2', 'msPromoCode2',
    MODX_CORE_PATH . 'components/mspromocode2/model/mspromocode2/');
$mspc2->initialize($modx->context->key);
$tools = $mspc2->getTools();

$data = [
    'id' => 22, // ID промо-кода для удаления
];

$response = $tools->runProcessor('mgr/coupons/remove', $data);
if ($errors = $tools->formatProcessorErrors($response)) {
    print_r($errors);
} else {
    print_r('Removed!');
}

Служба mspc2Randexp

Данная служба позволяет сгенерировать строку по шаблону. Работает на основе библиотеки RegRev.

Подключение

$mspc2 = $modx->getService('mspromocode2', 'msPromoCode2',
    MODX_CORE_PATH . 'components/mspromocode2/model/mspromocode2/');
$mspc2->initialize($modx->context->key);
$randexp = $mspc2->getRandexp();

Генерация уникального кода

$mspc2 = $modx->getService('mspromocode2', 'msPromoCode2',
    MODX_CORE_PATH . 'components/mspromocode2/model/mspromocode2/');
$mspc2->initialize($modx->context->key);
$randexp = $mspc2->getRandexp();

$code = '';
$format = '[0-9]{4}-[a-zA-Z0-9]{12}'; // шаблон по типу регулярки
while (empty($code)) {
    $tmp = $randexp->get($format);
    if (!$modx->getCount('mspc2Coupon', ['code' => $tmp])) {
        $code = $tmp;
    }
    unset($tmp);
}

print_r($code);

Служба mspc2Manager

Данная служба, в контексте публичного API, отвечает за проверку, установку и отмену промо-кода для корзины.

Подключение

$mspc2 = $modx->getService('mspromocode2', 'msPromoCode2',
    MODX_CORE_PATH . 'components/mspromocode2/model/mspromocode2/');
$mspc2->initialize($modx->context->key);
$manager = $mspc2->getManager();

getCoupon

Возвращает массив array с текущим установленным на корзину промо-кодом или строку string с ошибкой данного промо-кода или о том, что промо-код не найден.

$mspc2 = $modx->getService('mspromocode2', 'msPromoCode2',
    MODX_CORE_PATH . 'components/mspromocode2/model/mspromocode2/');
$mspc2->initialize($modx->context->key);
$manager = $mspc2->getManager();

$coupon_id = 8; // int
$coupon_code = 'code'; // string

// Получаем купон по его коду, для чего передаём первым параметром строку (string)
$result = $manager->getCoupon($coupon_code);

// или

// Получаем купон по его id, для чего передаём первым параметром число (integer)
$result = $manager->getCoupon($coupon_id);

// Проверяем, удалось ли получить промо-код
if (is_array($result)) {
    print_r('Промо-код: ' . print_r($result, 1));
} else {
    print_r('Ошибка: ' . $result);
}

getCurrentCoupon

Возвращает массив array с текущим установленным на корзину промо-кодом или null, если промо-код к корзине не применён.

$mspc2 = $modx->getService('mspromocode2', 'msPromoCode2',
    MODX_CORE_PATH . 'components/mspromocode2/model/mspromocode2/');
$mspc2->initialize($modx->context->key);
$manager = $mspc2->getManager();

//
$result = $manager->getCurrentCoupon();
if (is_array($result)) {
    print_r('Текущий промо-код применённый к корзине: ' . print_r($result, 1));
} else {
    print_r('Промо-код к корзине не применён');
}

setCoupon

Применяет купон к корзине.

Возвращает массив array с промо-кодом, если всё прошло успешно. Иначе строку string с ошибкой.

$mspc2 = $modx->getService('mspromocode2', 'msPromoCode2',
    MODX_CORE_PATH . 'components/mspromocode2/model/mspromocode2/');
$mspc2->initialize($modx->context->key);
$manager = $mspc2->getManager();

$coupon_id = 8; // int
$coupon_code = 'code'; // string

// Применяем купон по его коду, для чего передаём первым параметром строку (string)
$result = $manager->setCoupon($coupon_code);

// или

// Применяем купон по его id, для чего передаём первым параметром число (integer)
$result = $manager->setCoupon($coupon_id);

// Проверяем, удалось ли применить промо-код
if (is_array($result)) {
    print_r('Применённый промо-код: ' . print_r($result, 1));
} else {
    print_r('Ошибка: ' . $result);
}

unsetCoupon

Отменяет применённый к корзине промо-код.

$mspc2 = $modx->getService('mspromocode2', 'msPromoCode2',
    MODX_CORE_PATH . 'components/mspromocode2/model/mspromocode2/');
$mspc2->initialize($modx->context->key);
$manager = $mspc2->getManager();

//
$manager->unsetCoupon();

События плагинов

Описано в соответствующем разделе документации.

События jQuery

Описано в соответствующем разделе документации.



Предыдущий раздел
События плагинов