
События
Системные события
msCdek2OnSetTariffCode - генерируется на этапе получения кода тарифа, позволяет его подменить
Доступные параметры:
- $delivery - объект класса \msDelivery.
- $object - экземпляр класса MsCdek2Services\MsCdek2.
Пример плагина
switch ($modx->event->name){
case 'msCdek2OnSetTariffCode':
$object->tariffCode = 123;
break;
}msCdek2OnSetRequestData - генерируется перед отправкой запросов в API, позволяет дополнить или изменить данные запроса
Доступные параметры:
- $method - метод с помощью которого будет формироваться запрос (
getCalculationRequestData- подготовка запроса расчёта стоимости;getCoordinatesRequestData- подготовка запроса на получение координат центра карты при инициализации или смене города;getListPVZRequestData- подготовка запроса на получение списка ПВЗ). - $params - массив параметров для формирования запроса.
- $request - массив сформированного запроса.
- $object - экземпляр класса MsCdek2Services\MsCdek2.
Пример плагина
// меняем тип получаемых ПВЗ
switch ($modx->event->name){
case 'msCdek2OnSetRequestData':
if($method === 'getListPVZRequestData'){
$object->requestData['type'] = 'ALL';
}
break;
}msCdekOnGetWebConfig - генерируется при добавление JavaScript компонента на страницу, позволяет прокинуть любые параметры в JavaScript
Доступные параметры:
- $webConfig - массив параметров конфигурации.
- $object - экземпляр класса MsCdek2Services\MsCdek2.
Пример плагина
// меняем стандартный маркер
switch($modx->event->name){
case 'msCdekOnGetWebConfig':
$object->webConfig['markerImgParams'] = [
'width' => 24,
'height' => 32,
'src' => 'new/path/to/marker/img.png'
];
break;
}msCdek2OnResetStatus - генерируется после сброса некоторых данных статуса доставки
Доступные параметры:
- $object - экземпляр класса MsCdek2Services\MsCdek2.
Пример плагина
// удаляем custom_param из статуса доставки
switch ($modx->event->name){
case 'msCdek2OnResetStatus':
unset($_SESSION['mscdek2']['data']['custom_param']);
break;
}Вес и габариты из Опций (с 2.11.0)
События msCdek2OnGetProductWeight и msCdek2OnGetProductSizes вызываются для каждого товара до сборки упаковок, если включены соответственно ms_cdek2_use_individual_weight и ms_cdek2_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 на ключи своих Опций miniShop2.
$event = $modx->event->name;
if (!in_array($event, ['msCdek2OnGetProductWeight', 'msCdek2OnGetProductSizes'], true)) {
return;
}
$id = (int)($productData['id'] ?? 0);
$keys = $event === 'msCdek2OnGetProductWeight'
? ['shipping_weight']
: ['shipping_length', 'shipping_width', 'shipping_height'];
$values = [];
foreach ($modx->getCollection('msProductOption', ['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 === 'msCdek2OnGetProductWeight') {
$modx->event->params['weight'] = (float)$values['shipping_weight'];
} else {
$modx->event->params['sizes'] = implode('x', [
$values['shipping_length'], $values['shipping_width'], $values['shipping_height'],
]);
}ms_cdek2_sizes_ceil включает округление каждого размера вверх до целого сантиметра после применения ms_cdek2_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, points, coordinates, 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);
})