Номер телефона пользователя и письмо с паролем

Здравствуйте!

У меня возник ряд вопросов связанных с добавлением пользователя при оформлении заказа:

1) При оформлении заказа добавляется новый пользователь, при этом в профиле заполняются поля email, имя пользователя и полное имя.

Каким образом можно заполнить поле телефон в профиле из данных заказа? Так сказать, чтобы было больше информации в клиентской базе.

2) Как отправить новому пользователю письмо с регистрационными данными? Чтобы сразу после заказа, он без дополнительных действий мог сразу попасть в кабинет для просмотра статуса заказа.

Заранее спасибо за ответы!
Николай Артамонов
16 января 2016, 13:44
modx.pro
3
2 062
0

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

mngatoff
17 января 2016, 03:48
2
+1
1. файл core/components/minishop2/model/minishop2/minishop2.class.php
строка 263 — функция getCustomerId создает пользователей, если их нет. Здесь можно добавить сохранение телефона. Только потом минишоп нельзя обновлять)
2. плагин на событие msOnChangeOrderStatus
происходит в нем примерно следующее:
<?php
$user = $modx->getObject('modUser', $order->get('user_id'));
$prof = $user->getOne('Profile');

if ($prof->get('logincount') > 0 || $order->get('status') > 1) return;

$pass = $user->generatePassword(6);
$user->set('password', $pass);
$user->save();

$message = "<p><strong>Ваши данные для входа в личный кабинет на сайте ".$modx->getOption('site_name')."</strong></p>
            <table>
            	<tr><td><strong>Логин:</strong></td><td>".$user->get('username')."</td></tr>
            	<tr><td><strong>Пароль:</strong></td><td>".$pass."</td></tr>
            </table>";
$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_BODY, $message);
$modx->mail->set(modMail::MAIL_FROM, $modx->getOption('emailsender'));
$modx->mail->set(modMail::MAIL_FROM_NAME, $modx->getOption('site_name'));
$modx->mail->set(modMail::MAIL_SENDER, $modx->getOption('emailsender'));
$modx->mail->set(modMail::MAIL_SUBJECT, 'Ваши данные для входа на сайт');
$modx->mail->address('to', $prof->get('email'));
$modx->mail->setHTML(true);
if (!$modx->mail->send()) {
    $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
}
$modx->mail->reset();
Это будет отдельное письмо, сам заказ отправляется минишопом, туда я не влезал.
    Kirill nefedev
    10 июня 2020, 11:32
    0
    можно не мучаться с modMail ))
    $user->sendEmail($message,[
    	'subject'=>'восстановление пароля'
    ]);
    Николай Артамонов
    17 января 2016, 10:04
    0
    Спасибо, теперь все ясно!

    Вообще, конечно, было бы здорово иметь возможность сохранять пользователей при заказе так, как считаешь нужным стандартным способом. Тогда можно будет и адреса предзаполнять из этих данных и клиентскую базу собирать и с днем рождения поздравлять отпрвляя дисконты и все в таком духе.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3