Как подставить данные покупателя в тему письма заказа менеджеру MINISHOP2

Добрый день, не могу разобраться как подставить данные покупателя (телефон и имя) в тему письма заказа менеджеру.

Покупатель заполняет поля в форме заказа, и мне нужно вытащить поле имя и телефон в тему письма заказа для менеджера.

Мне нужен вот такой шаблон темы письма:

«У вас новый заказ #2111/01 / от [[+имя покупателя]] / тел.: [[+номер телефона]]»

Стандартные [[+address.receiver]] [[+address.phone]] отображаются в теле письма — тут всё ок. Но добавляя их в тему письма — они не работают.
___

Какие есть решения?
Константин
16 ноября 2021, 09:27
modx.pro
447
0

Комментарии: 6

Антон Тарасов
16 ноября 2021, 11:53
0
Вы в лексиконе ms2_email_subject_new_manager указывали, верно? Попробуйте просто [[+receiver]] и [[+phone]]
    Константин
    16 ноября 2021, 12:19
    0
    Да, всё верно в этом лексиконе добавляю. Но к сожалению не читается.
    Письмо приходит по типу: «У вас новый заказ #2111/35 [[+receiver]] и [[+phone]]»

    Пробовал и [[+receiver]] и [[+phone]], и [[+address.phone]] / [[+address.receiver], [[+form.phone]] / [[+form.receiver]], не выводит данные покупателя.
      Антон Тарасов
      16 ноября 2021, 12:29
      0
      Забыл сказать самое главное :) — вам нужно переопределить класс минишопа и использовать его, как это сделать -здесь: modx.pro/development/3168
      в исходном классе minishop2.class.php есть метод
      public function changeOrderStatus($order_id, $status_id)
      переопределив, нужно добавить примерно следующее:
      $pls = $order->toArray();
      $profile = $this->modx->getObject('modUserProfile', array('internalKey' => $order->get('user_id')));
      $pls['receiver'] = $profile->get('fullname'); //найдите строки выше и добавьте недостающие плейсхолдеры
        Константин
        17 ноября 2021, 06:52
        0
        C Пользователем получилось, но пытаюсь по подобию пользователя вывести телефон — не получается.
        $phone = $this->modx->newObject('modUserProfile', array('mobilephone' => $phone));
        $pls['phone'] = $phone->get('mobilephone');
        Не могу понять, то-ли логика нарушена, то ли опечатка в коде. Поле телефона стандартное.
        Роман
        16 ноября 2021, 14:46
        0
        Скорее всего и не придет. Там в классе minishop2 переопределить функцию changeOrderStatus
        $subject = $this->pdoTools->getChunk('@INLINE '. $status->get('subject_user'), $pls);
        И сделать вместо @INLINE, modChunk.
        Не уверен, но попробовать стоит.
          Роман
          16 ноября 2021, 14:48
          0
          Просто @INLINE не отработает [[+address.receiver]]
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      6