KlenOfSky WEB Agency - создание и тех. поддержка сайтов. Продвижение в Яндекс и Google

Создание сайтов, поисковое продвижение в Google. Сопровождение, тех.поддержка


Звонить: +7 (999)96-88-777
Писать: web@klenovsky.ru


Регистрационные данные на почту клиента в 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.com/, Вы сможете сменить пароль.</p>
 
<p>С уважением,<br />Администратор сайта</p>

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

На этом всё.

Большая Семеновская, 42 10509 Россия, город Москва, +7 (999)96-88-777
Рассказать друзьям:

comments powered by Disqus