
События
Системные события
msCdekOnSetTariffCode - генерируется на этапе получения кода тарифа, позволяет его подменить
Доступные параметры:
- $delivery - объект класса msDelivery.
- $object - экземпляр класса MsCdek\MsCdek.
Пример плагина
switch ($modx->event->name){
case 'msCdekOnSetTariffCode':
$object->tariffCode = 123;
break;
}msCdekOnSetRequestData - генерируется перед отправкой запросов в API, позволяет дополнить или изменить данные запроса
Доступные параметры:
- $method - метод с помощью которого будет формироваться запрос (
getCalculationRequestData- подготовка запроса расчёта стоимости;getCoordinatesRequestData- подготовка запроса на получение координат центра карты при инициализации или смене города;getListPVZRequestData- подготовка запроса на получение списка ПВЗ). - $params - массив параметров для формирования запроса.
- $request - массив сформированного запроса.
- $object - экземпляр класса MsCdek\MsCdek.
Пример плагина
// меняем тип получаемых ПВЗ
switch ($modx->event->name){
case 'msCdekOnSetRequestData':
if($method === 'getListPVZRequestData'){
$object->requestData['type'] = 'ALL';
}
break;
}msCdekOnGetWebConfig - генерируется при добавлении JavaScript компонента на страницу, позволяет прокинуть любые параметры в JavaScript
Доступные параметры:
- $webConfig - массив параметров конфигурации.
- $object - экземпляр класса MsCdek\MsCdek.
Пример плагина
// меняем стандартный маркер
switch($modx->event->name){
case 'msCdekOnGetWebConfig':
$object->webConfig['markerImgParams'] = [
'width' => 24,
'height' => 32,
'src' => 'new/path/to/marker/img.png'
];
break;
}msCdekOnSendRequest - генерируется после отправки запроса в API СДЭК, позволяет обработать или модифицировать ответ
Доступные параметры:
- $requestData - массив данных запроса.
- $method - имя метода API.
- $response - массив ответа от API.
- $object - экземпляр класса MsCdek\MsCdek.
Пример плагина
switch ($modx->event->name){
case 'msCdekOnSendRequest':
// логируем все запросы к API СДЭК
$modx->log(1, 'CDEK API ' . $method . ': ' . json_encode($response));
break;
}msCdekOnResetStatus - генерируется после сброса некоторых данных статуса доставки
Доступные параметры:
- $object - экземпляр класса MsCdek\MsCdek.
Пример плагина
// удаляем custom_param из статуса доставки
switch ($modx->event->name){
case 'msCdekOnResetStatus':
unset($_SESSION['mscdek']['data']['custom_param']);
break;
}Вес и габариты из Опций (с 3.2.0)
События msCdekOnGetProductWeight и msCdekOnGetProductSizes вызываются для каждого товара до сборки упаковок, если включены соответственно mscdek_packages_use_individual_weight и mscdek_packages_use_individual_sizes. Параметры: cartProduct (позиция корзины/заказа), productData (поля ресурса и msProductData), object (сервис), а также weight или sizes (выбранное штатным способом значение).
Значение изменяется через $modx->event->params['weight'] или $modx->event->params['sizes']. weight — число, sizes — строка длинаxширинаxвысота. Это исходные единицы магазина: множители применяются ПОСЛЕ плагина. При стандартных множителях вес передаётся в килограммах (×1000 → граммы), размеры — в сантиметрах (×1). Если размеры хранятся в миллиметрах, задайте множитель 0.1. Количество товара учитывает штатный сборщик: передавайте значения для одной штуки. Пустые размеры и нулевой вес используют значения по умолчанию. Событие может вызываться повторно при подготовке списка вложений: обработчик должен возвращать одинаковые значения и не менять корзину.
Пример: создайте плагин, подпишите его на оба события. Замените shipping_weight, shipping_length, shipping_width, shipping_height на ключи своих Опций MiniShop3.
$event = $modx->event->name;
if (!in_array($event, ['msCdekOnGetProductWeight', 'msCdekOnGetProductSizes'], true)) {
return;
}
$id = (int)($productData['id'] ?? 0);
$keys = $event === 'msCdekOnGetProductWeight'
? ['shipping_weight']
: ['shipping_length', 'shipping_width', 'shipping_height'];
$values = [];
foreach ($modx->getCollection(\MiniShop3\Model\msProductOption::class, ['product_id' => $id, 'key:IN' => $keys]) as $option) {
$values[$option->get('key')] = $option->get('value');
}
foreach ($keys as $key) {
if (!isset($values[$key]) || !is_numeric($values[$key]) || $values[$key] <= 0) {
return; // Неполные Опции: сохраняем штатное значение.
}
}
if ($event === 'msCdekOnGetProductWeight') {
$modx->event->params['weight'] = (float)$values['shipping_weight'];
} else {
$modx->event->params['sizes'] = implode('x', [
$values['shipping_length'], $values['shipping_width'], $values['shipping_height'],
]);
}mscdek_packages_sizes_ceil включает округление каждого размера вверх до целого сантиметра после применения mscdek_packages_size_multiplier: 12.1 → 13; 121 мм × 0.1 → 13 см. Округление действует и на размеры товаров, и на размеры упаковки по умолчанию. По умолчанию настройка выключена, прежнее поведение сохраняется.
События JavaScript
mscdek:initialized - инициализация компонента завершена
Событие возникает после загрузки всех модулей, указанных в JS конфигурации. Не может быть отменено. Чтобы без проблем использовать все модули, подписывайтесь на это событие, так как после его срабатывания объект mscdek и его дочерние элементы точно доступны.
Доступные параметры:
- object - экземпляр класса Mscdek.
Пример использования
document.addEventListener('mscdek:initialized', (e) => {
console.log(e.detail.object);
});mscdek:init - инициализация отдельного модуля компонента завершена
Событие возникает, когда конкретный модуль загружен и инициализирован. Не может быть отменено.
Доступные параметры:
- moduleName - имя инициализированного модуля (Address, List, Map).
- object - экземпляр класса текущего модуля.
Пример использования
document.addEventListener('mscdek:init', e => {
const {moduleName, object} = e.detail;
console.log(moduleName, object);
})mscdek:address:select:suggestion - выбор подсказки при вводе адреса
Событие возникает, когда пользователь выбирает одну из подсказок. Может быть отменено.
Доступные параметры:
- location - объект данных о выбранном населенном пункте.
- ymap - объект карты.
- object - экземпляр класса Address.
Пример использования
document.addEventListener('mscdek:address:select:suggestion', e => {
const {location, ymap, object} = e.detail;
console.log(location, ymap, object);
})mscdek:list:get - получение списка ПВЗ
Событие возникает, когда от сервера получен список ПВЗ. Не может быть отменено.
Доступные параметры:
- showList - параметр, определяющий будет ли показан список пользователю.
- cache - параметр, информирующий о том, откуда был получен список с сервера или из кэша.
- result - объект ответа сервера.
- object - экземпляр класса List.
Пример использования
document.addEventListener('mscdek:list:get', e => {
const {showList, cache, result, object} = e.detail;
console.log(cache, result, object);
})mscdek:status:get - получение статуса доставки
Событие возникает, когда от сервера получен статус доставки. Не может быть отменено.
Доступные параметры:
- status - данные о доставке.
- result - объект ответа сервера.
- object - экземпляр класса List.
Пример использования
document.addEventListener('mscdek:status:get', e => {
const {status, result, object} = e.detail;
console.log(status, result, object);
})mscdek:point:change - выбран ПВЗ из списка
Событие возникает, когда выбран ПВЗ из списка. Не может быть отменено.
Доступные параметры:
- mscdekCode - код выбранного ПВЗ.
- selectedPoint - объект данных выбранного ПВЗ.
- result - объект ответа сервера.
- object - экземпляр класса List.
Пример использования
document.addEventListener('mscdek:point:change', e => {
const {mscdekCode, selectedPoint, result, object} = e.detail;
console.log(mscdekCode, selectedPoint, result, object);
})mscdek:point:error - отправка заказа без ПВЗ
Событие возникает, когда пользователь отправляет заказ не выбрав ПВЗ. Не может быть отменено.
Доступные параметры:
- response - объект ответа сервера.
- object - экземпляр класса List.
Пример использования
document.addEventListener('mscdek:point:error', e => {
const {response, object} = e.detail;
console.log(response, object);
})mscdek:map:init - инициализация карты
Событие возникает, когда карта инициализирована, тут можно добавить объекты и слои. Не может быть отменено.
Доступные параметры:
- mapBlock - html элемент блока, в который отрисована карта.
- ymap - объект карты.
- object - экземпляр класса Map.
Пример использования
document.addEventListener('mscdek:map:init', e => {
const {mapBlock, ymap, object} = e.detail;
console.log(mapBlock, ymap, object);
})mscdek:map:show - карта показана
Событие возникает перед показом карты пользователю, тут можно добавить объекты и слои, изменить координаты центра или зум. Не может быть отменено.
Доступные параметры:
- mapBlock - html элемент блока, в который отрисована карта.
- mapUpdParams - объект параметров обновления карты.
- ymap - объект карты.
- object - экземпляр класса Map.
Пример использования
document.addEventListener('mscdek:map:show', e => {
const {mapBlock, mapUpdParams, ymap, object} = e.detail;
console.log(mapBlock, mapUpdParams, ymap, object);
})mscdek:map:hide - карта скрыта
Событие возникает после того как карта скрыта. Не может быть отменено.
Доступные параметры:
- mapBlock - html элемент блока, в который отрисована карта.
- ymap - объект карты.
- object - экземпляр класса Map.
Пример использования
document.addEventListener('mscdek:map:hide', e => {
const {mapBlock, ymap, object} = e.detail;
console.log(mapBlock, ymap, object);
})mscdek:map:choose - выбран ПВЗ на карте
Событие возникает после того как пользователь выбрал ПВЗ на карте. Не может быть отменено.
Доступные параметры:
- allMarkers - коллекция html элементов маркеров.
- marker - html элемент выбранного маркера.
- markerData - объект данных выбранного ПВЗ.
- mapBlock - html элемент блока, в который отрисована карта.
- ymap - объект карты.
- object - экземпляр класса Map.
Пример использования
document.addEventListener('mscdek:map:choose', e => {
const {allMarkers, marker, mapBlock, markerData, ymap, object} = e.detail;
console.log(allMarkers, marker, mapBlock, markerData, ymap, object);
})mscdek:marker:create - создание маркера на карте
Событие возникает, когда создаётся новый маркер на карте. Не может быть отменено.
Доступные параметры:
- marker - html элемент выбранного маркера.
- markerData - объект данных выбранного ПВЗ.
- object - экземпляр класса Map.
Пример использования
document.addEventListener('mscdek:marker:create', e => {
const {marker, markerData, object} = e.detail;
console.log(marker, markerData, object);
})