Наверх

Регистрационные данные на почту клиента, miniShop2

В разделе «Репосты» расположены чужие статьи, которые мне понравились или показались полезными.

Появилась задача: после заказа клиентом товаров в интернет-магазине, реализованном на miniShop2, высылать регистрационные данные (логин/пароль) на указанную почту клиента. Из коробки почему то такого функционала нет, хотя регистрация проходит. Получается так, что пользователь после оформления заказа даже и не подозревает что только что зарегистрировался на сайте. Как-то это не правильно. Собственно отсюда и появилась такая задача.

Было решено написать плагин, который через процессор MODX будет изменять пароль новому клиенту и отправлять его на указанную им почту. Пароль должен генерировать сам MODX.

Плагин сработает при условиях:
— Заказ имеет статус 1 (Новый)
— С момента регистрации пользователя прошло не более 10 секунд

Сам плагин:
if ($modx->event->name == 'msOnChangeOrderStatus') {
	// Если статус заказа << Новый >>
        if ($status == 1) {
            $userId = $order->user_id;
            $objUser = $modx->getObject('modUser', $userId);
            $objProfile = $modx->getObject('modUserProfile', $userId);
            $time = time();
            $newUser = 10; // Сколько секунд пользователь считается новым
            
            if ($objUser && $objProfile) {
                $username = $objUser->get('username');
                $email = $objProfile->get('email');
                $createdon = strtotime($objUser->get('createdon')) + $newUser;
                $modx = new modX();
                $modx->initialize('mgr');
                $modx->getService('error','error.modError');
                
                if ($createdon > $time) {
                    $data = array(
                        'id' => $userId,
                        'username' => $username,
                        'email' => $email,
                        'newpassword' => 'passwordgenmethod', // любой набор символов
                        'passwordgenmethod' => 'g', // отдаём генерацию пароля MODX
                        'passwordnotifymethod'  => 'e', // письмо пользователю
                    );
                    
                    $response = $modx->runProcessor('/security/user/update', $data);
                    if ($response->isError()) {
                         $modx->log(modX::LOG_LEVEL_ERROR, 'Update error. Username: '.$username.', Message: '.$response->getMessage());
                    }
                }
            }
        }
}

Теперь идём в системную настройку signupemail_message и изменяем тело письма на примерно следующее:

<p>Здравствуйте [[+ufn]],</p>
<p>Ваши регистрационные данные для входа на сайт [[+sname]]:</p>
 
<p>
    <strong>Логин:</strong> [[+uid]]<br />
    <strong>Пароль:</strong> [[+pwd]]<br />
</p>
 
<p>После входа на сайт http://my-site.ru/, Вы сможете сменить пароль.</p>
 
<p>С уважением,<br />Администратор сайта</p>

Можно ещё и тему письма изменить в системной настройке emailsubject.

Ну и всё. Теперь ваши клиенты будут знать, что их зарегистрировали на сайте при оформлении заказа.

Источник: marabar.ru/blogs/turnkey-solutions/136-registration-data-to-the-mail-client-minishop2/


9 комментариев

  1. Denis Chuba 24 мая 2019, 10:24 # 0
    Илья, добрый день. Подскажи, пожалуйста, как можно реализовать выбор по чекбоксу
    — отправлять сообщение о регистрации при оформлении заказа или не отправлять.
    Или менять группу при выборе клиентом Оптовый покупатель или разово зашел купить и в зависимости от чекбокса назначить группу.
    1. Илья Уткин 24 мая 2019, 10:29 # 0
      Привет! Блин, готового решения у меня нет — и даже навскидку сейчас не подскажу. Напиши на modx.pro — это интересный вопрос.
    2. Denis Chuba 24 мая 2019, 11:13 # 0
      Хорошо. Спасибо.
      1. Guliverland 04 февраля 2020, 11:51 # 0
        Не по теме, но
        Вопрос: Как в minishop2 настроить что бы заказы из разных категорий падали на разные почты.
        Например: из категории смартфоны на 1@mail.ru, а из категории телевизоры на 2@mail.ru
        1. Илья Уткин 04 февраля 2020, 11:53 # 0
          Не знаю, я с такой задачей не сталкивался. Попробуй спросить на modx.pro — там наверняка кто-то такое уже делал.
          1. Guliverland 04 февраля 2020, 13:16(Комментарий был изменён) # 0
            Спасибо!
        2. Вероника 06 мая 2021, 20:45 # 0
          Чекбокс name order-reg
          
          if ($modx->event->name == 'msOnCreateOrder') {
              if (isset($_REQUEST['order-reg']) && $_REQUEST['order-reg'] == "on") {
                  $userId = $msOrder->user_id;
                  $objUser = $modx->getObject('modUser', $userId);
                  $objProfile = $modx->getObject('modUserProfile', $userId);
                  $time = time();
                  $newUser = 10; // Сколько секунд пользователь считается новым
                  
                  if ($objUser && $objProfile) {
                      $username = $objUser->get('username');
                      $email = $objProfile->get('email');
                      $createdon = strtotime($objUser->get('createdon')) + $newUser;
                      $modx = new modX();
                      $modx->initialize('mgr');
                      $modx->getService('error','error.modError');
                      
                      if ($createdon > $time) {
                          $data = array(
                              'id' => $userId,
                              'username' => $username,
                              'email' => $email,
                              'newpassword' => 'passwordgenmethod', // любой набор символов
                              'passwordgenmethod' => 'g', // отдаём генерацию пароля MODX
                              'passwordnotifymethod'  => 'e', // письмо пользователю
                          );
                          
                          $response = $modx->runProcessor('/security/user/update', $data);
                          if ($response->isError()) {
                               $modx->log(modX::LOG_LEVEL_ERROR, 'Update error. Username: '.$username.', Message: '.$response->getMessage());
                          }
                      }
                  }
              }
          }
          
          1. Никита Жолобов 17 июня 2021, 13:11 # 0
            Спасибо Илья, просто лучший!=)
            1. Johnathan Hartmann 25 октября 2023, 13:47 # 0
              numquam

              Авторизация

              через сервис Loginza:


              Шаблоны MODX

              1 2 Дальше »

              Объектная
              модель
              MODX