Александр Суркин

Александр Суркин

Был в сети 03 августа 2021, 09:10
Заказы не принимаю
Пишу ответ на свой вопрос, вдруг кому пригодится :)
<?php
switch ($modx->event->name) {
    case 'msOnCreateOrder':

//        $data = array(); // данные стороннего сервиса. если они были в json, то нужно преобразовать в массив php
  $data = array('Параметры');
        $properties = $msOrder->get('properties'); // получаем уже сохраненные properties в виде массива, мало ли туда еще какой плагин что напишет или уже написал

        $properties['delivery_details'] = $data; // сохраняем массив данных от стороннего cервиса

  $msOrder->set('delivery_cost', 123); // записываем стоимость доставки в заказ
        $msOrder->set('properties', $properties); // перезаписываем properties
        $msOrder->save(); // сохраняем наш заказ
    break;
}
Большое спасибо за инструкцию, всё настроил, работает. Однако, если открывать страницу квитанции (разместить чанк tpl.msEmail.bank_bill.user на странице с пустым шаблоном), все отображается великолепно, но если открывать с почты mail.ru пришедшее письмо, то всё форматирование теряется :( Подскажите, как можно это обойти?
Я так понял, что можно либо расширять класс msorderhandler, либо создать плагин. Я решил использовать плагин.

Из
документации:
msOnBeforeCreateOrder — событие перед сохранением сформированного класса, со всеми прицепленными объектами, получает объект order.

Подскажите, пожалуйста, как мне работать с этим объектом. Как получить к примеру стоимость?
$cost = $order…